From b80452111794b613819d5ad51e1690c4dd923e97 Mon Sep 17 00:00:00 2001 From: crancocco Date: Sat, 25 Jun 2016 22:55:16 +0800 Subject: z2_plus: Update GPS HAL from upstream * Tag LA.HB.1.3.2-15400-8x96.0 Change-Id: I2ba108f26a2ef4fc78504ef8c08ca41624ccb193 --- gps/utils/LocSharedLock.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gps/utils/LocSharedLock.h') diff --git a/gps/utils/LocSharedLock.h b/gps/utils/LocSharedLock.h index 6b9e27f..7fe6237 100644 --- a/gps/utils/LocSharedLock.h +++ b/gps/utils/LocSharedLock.h @@ -30,6 +30,7 @@ #define __LOC_SHARED_LOCK__ #include +#include #include // This is a utility created for use cases such that there are more than @@ -39,16 +40,16 @@ // this share lock's share() method has to be called, so that the obj // can maintain an accurate client count. class LocSharedLock { - uint32_t mRef; + volatile int32_t mRef; pthread_mutex_t mMutex; inline ~LocSharedLock() { pthread_mutex_destroy(&mMutex); } public: // first client to create this LockSharedLock inline LocSharedLock() : mRef(1) { pthread_mutex_init(&mMutex, NULL); } // following client(s) are to *share()* this lock created by the first client - inline LocSharedLock* share() { mRef++; return this; } + inline LocSharedLock* share() { android_atomic_inc(&mRef); return this; } // whe a client no longer needs this shared lock, drop() shall be called. - inline void drop() { if (0 == --mRef) delete this; } + inline void drop() { if (1 == android_atomic_dec(&mRef)) delete this; } // locking the lock to enter critical section inline void lock() { pthread_mutex_lock(&mMutex); } // unlocking the lock to leave the critical section -- cgit v1.2.3