Index: source/soundmanager/SoundManager.cpp =================================================================== --- source/soundmanager/SoundManager.cpp +++ source/soundmanager/SoundManager.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -48,8 +48,6 @@ public: CSoundManagerWorker() { - m_Items = new ItemsList; - m_DeadItems = new ItemsList; m_Shutdown = false; m_WorkerThread = std::thread(Threading::HandleExceptions::Wrapper, this); @@ -57,9 +55,7 @@ ~CSoundManagerWorker() { - delete m_Items; CleanupItems(); - delete m_DeadItems; } bool Shutdown() @@ -69,8 +65,8 @@ m_Shutdown = true; - ItemsList::iterator lstr = m_Items->begin(); - while (lstr != m_Items->end()) + ItemsList::iterator lstr = m_Items.begin(); + while (lstr != m_Items.end()) { delete *lstr; ++lstr; @@ -86,22 +82,22 @@ void addItem(ISoundItem* anItem) { std::lock_guard lock(m_WorkerMutex); - m_Items->push_back(anItem); + m_Items.push_back(anItem); } void CleanupItems() { std::lock_guard lock(m_DeadItemsMutex); AL_CHECK; - ItemsList::iterator deadItems = m_DeadItems->begin(); - while (deadItems != m_DeadItems->end()) + ItemsList::iterator deadItems = m_DeadItems.begin(); + while (deadItems != m_DeadItems.end()) { delete *deadItems; ++deadItems; AL_CHECK; } - m_DeadItems->clear(); + m_DeadItems.clear(); } private: @@ -128,10 +124,10 @@ { std::lock_guard workerLock(m_WorkerMutex); - ItemsList::iterator lstr = m_Items->begin(); - ItemsList* nextItemList = new ItemsList; + ItemsList::iterator lstr = m_Items.begin(); + ItemsList nextItemList; - while (lstr != m_Items->end()) + while (lstr != m_Items.end()) { AL_CHECK; if ((*lstr)->IdleTask()) @@ -139,20 +135,19 @@ if ((pauseTime == 500) && (*lstr)->IsFading()) pauseTime = 100; - nextItemList->push_back(*lstr); + nextItemList.push_back(*lstr); } else { std::lock_guard deadItemsLock(m_DeadItemsMutex); - m_DeadItems->push_back(*lstr); + m_DeadItems.push_back(*lstr); } ++lstr; AL_CHECK; } - delete m_Items; - m_Items = nextItemList; + m_Items = std::move(nextItemList); AL_CHECK; } @@ -174,8 +169,8 @@ // Shared by main thread and worker thread: // These variables are all protected by a mutexes - ItemsList* m_Items; - ItemsList* m_DeadItems; + ItemsList m_Items; + ItemsList m_DeadItems; bool m_Shutdown;