| Index: webrtc/modules/audio_conference_mixer/source/memory_pool_win.h
|
| diff --git a/webrtc/modules/audio_conference_mixer/source/memory_pool_win.h b/webrtc/modules/audio_conference_mixer/source/memory_pool_win.h
|
| index 772a123ab7a053a760848d704a26d606d32891b1..91d662787e4a300b9528cea11fe1cae5bff6264c 100644
|
| --- a/webrtc/modules/audio_conference_mixer/source/memory_pool_win.h
|
| +++ b/webrtc/modules/audio_conference_mixer/source/memory_pool_win.h
|
| @@ -14,8 +14,8 @@
|
| #include <assert.h>
|
| #include <windows.h>
|
|
|
| +#include "webrtc/base/atomicops.h"
|
| #include "webrtc/system_wrappers/interface/aligned_malloc.h"
|
| -#include "webrtc/system_wrappers/interface/atomic32.h"
|
| #include "webrtc/typedefs.h"
|
|
|
| namespace webrtc {
|
| @@ -66,8 +66,8 @@ private:
|
| // Atomic single linked list head.
|
| PSLIST_HEADER _pListHead;
|
|
|
| - Atomic32 _createdMemory;
|
| - Atomic32 _outstandingMemory;
|
| + volatile int _createdMemory;
|
| + volatile int _outstandingMemory;
|
| };
|
|
|
| template<class MemoryType>
|
| @@ -89,8 +89,8 @@ MemoryPoolImpl<MemoryType>::~MemoryPoolImpl()
|
| _pListHead = NULL;
|
| }
|
| // Trigger assert if there is outstanding memory.
|
| - assert(_createdMemory.Value() == 0);
|
| - assert(_outstandingMemory.Value() == 0);
|
| + assert(rtc::AtomicOps::AcquireLoad(&_createdMemory) == 0);
|
| + assert(rtc::AtomicOps::AcquireLoad(&_outstandingMemory) == 0);
|
| }
|
|
|
| template<class MemoryType>
|
| @@ -106,7 +106,7 @@ int32_t MemoryPoolImpl<MemoryType>::PopMemory(MemoryType*& memory)
|
| }
|
| pListEntry = &(item->itemEntry);
|
| }
|
| - ++_outstandingMemory;
|
| + rtc::AtomicOps::Increment(&_outstandingMemory);
|
| memory = &((MemoryPoolItem<MemoryType>*)pListEntry)->payload->memoryType;
|
| return 0;
|
| }
|
| @@ -122,8 +122,8 @@ int32_t MemoryPoolImpl<MemoryType>::PushMemory(MemoryType*& memory)
|
| MemoryPoolItem<MemoryType>* item =
|
| ((MemoryPoolItemPayload<MemoryType>*)memory)->base;
|
|
|
| - const int32_t usedItems = --_outstandingMemory;
|
| - const int32_t totalItems = _createdMemory.Value();
|
| + const int32_t usedItems = rtc::AtomicOps::Decrement(&_outstandingMemory);
|
| + const int32_t totalItems = rtc::AtomicOps::AcquireLoad(&_createdMemory);
|
| const int32_t freeItems = totalItems - usedItems;
|
| if(freeItems < 0)
|
| {
|
| @@ -136,7 +136,7 @@ int32_t MemoryPoolImpl<MemoryType>::PushMemory(MemoryType*& memory)
|
| {
|
| delete item->payload;
|
| AlignedFree(item);
|
| - --_createdMemory;
|
| + rtc::AtomicOps::Decrement(&_createdMemory);
|
| return 0;
|
| }
|
| InterlockedPushEntrySList(_pListHead,&(item->itemEntry));
|
| @@ -166,7 +166,7 @@ int32_t MemoryPoolImpl<MemoryType>::Terminate()
|
| MemoryPoolItem<MemoryType>* item = ((MemoryPoolItem<MemoryType>*)pListEntry);
|
| delete item->payload;
|
| AlignedFree(item);
|
| - --_createdMemory;
|
| + rtc::AtomicOps::Decrement(&_createdMemory);
|
| itemsFreed++;
|
| pListEntry = InterlockedPopEntrySList(_pListHead);
|
| }
|
| @@ -191,7 +191,7 @@ MemoryPoolItem<MemoryType>* MemoryPoolImpl<MemoryType>::CreateMemory()
|
| return NULL;
|
| }
|
| returnValue->payload->base = returnValue;
|
| - ++_createdMemory;
|
| + rtc::AtomicOps::Increment(&_createdMemory);
|
| return returnValue;
|
| }
|
| } // namespace webrtc
|
|
|