| Index: gpu/command_buffer/client/atomicops.cc
|
| diff --git a/gpu/command_buffer/client/atomicops.cc b/gpu/command_buffer/client/atomicops.cc
|
| index 142ab9c6f6448d0532333e247e9629f6d366e0e5..318c337fb643ce168f47a4a3a7b2e218561178a3 100644
|
| --- a/gpu/command_buffer/client/atomicops.cc
|
| +++ b/gpu/command_buffer/client/atomicops.cc
|
| @@ -3,9 +3,13 @@
|
| // found in the LICENSE file.
|
|
|
| #include "../client/atomicops.h"
|
| +#include "../common/logging.h"
|
|
|
| #if !defined(__native_client__)
|
| #include "base/atomicops.h"
|
| +#include "base/synchronization/lock.h"
|
| +#else
|
| +#include <pthread.h>
|
| #endif
|
|
|
| namespace gpu {
|
| @@ -18,5 +22,78 @@ void MemoryBarrier() {
|
| #endif
|
| }
|
|
|
| +#if defined(__native_client__)
|
| +
|
| +class LockImpl {
|
| + public:
|
| + LockImpl()
|
| + : acquired_(false) {
|
| + pthread_mutex_init(&mutex_, NULL);
|
| + }
|
| +
|
| + ~LockImpl() {
|
| + pthread_mutex_destroy(&mutex_);
|
| + }
|
| +
|
| + void Acquire() {
|
| + pthread_mutex_lock(&mutex_);
|
| + acquired_ = true;
|
| + }
|
| +
|
| + void Release() {
|
| + GPU_DCHECK(acquired_);
|
| + acquired_ = false;
|
| + pthread_mutex_unlock(&mutex_);
|
| + }
|
| +
|
| + bool Try() {
|
| + bool acquired = pthread_mutex_trylock(&mutex_) == 0;
|
| + if (acquired) {
|
| + acquired_ = true;
|
| + }
|
| + return acquired;
|
| + }
|
| +
|
| + void AssertAcquired() const {
|
| + GPU_DCHECK(acquired_);
|
| + }
|
| +
|
| + private:
|
| + bool acquired_;
|
| + pthread_mutex_t mutex_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(LockImpl);
|
| +};
|
| +
|
| +#else // !__native_client__
|
| +
|
| +class LockImpl : public base::Lock {
|
| +};
|
| +
|
| +#endif // !__native_client__
|
| +
|
| +Lock::Lock()
|
| + : lock_(new LockImpl()) {
|
| +}
|
| +
|
| +Lock::~Lock() {
|
| +}
|
| +
|
| +void Lock::Acquire() {
|
| + lock_->Acquire();
|
| +}
|
| +
|
| +void Lock::Release() {
|
| + lock_->Release();
|
| +}
|
| +
|
| +bool Lock::Try() {
|
| + return lock_->Try();
|
| +}
|
| +
|
| +void Lock::AssertAcquired() const {
|
| + return lock_->AssertAcquired();
|
| +}
|
| +
|
| } // namespace gpu
|
|
|
|
|