// Copyright 2013 Google Inc. All Rights Reserved. // // Lock class - provides a simple android specific mutex implementation #include "lock.h" #include "utils/Mutex.h" namespace wvcdm { class Lock::Impl { public: android::Mutex lock_; }; Lock::Lock() : impl_(new Lock::Impl()) { } Lock::~Lock() { delete impl_; impl_ = NULL; } void Lock::Acquire() { impl_->lock_.lock(); } void Lock::Release() { impl_->lock_.unlock(); } bool Lock::Try() { return (impl_->lock_.tryLock() == 0); } class AutoLock::Impl { public: android::Mutex::Autolock *autolock_; }; AutoLock::AutoLock(Lock& lock) : impl_(new AutoLock::Impl()) { impl_->autolock_ = new android::Mutex::Autolock(lock.impl_->lock_); } AutoLock::AutoLock(Lock* lock) : impl_(new AutoLock::Impl()) { impl_->autolock_ = new android::Mutex::Autolock(lock->impl_->lock_); } AutoLock::~AutoLock() { delete impl_->autolock_; delete impl_; impl_ = NULL; } }; // namespace wvcdm