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 |