Changeset 101925 in vbox for trunk/src/libs/xpcom18a4
- Timestamp:
- Nov 7, 2023 10:24:20 AM (15 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/libs/xpcom18a4/xpcom/threads/nsAutoLock.h
r101916 r101925 108 108 109 109 #include "nscore.h" 110 #include "prlock.h"111 #include "prlog.h"112 110 113 111 #include <iprt/assert.h> … … 135 133 class NS_COM nsAutoLock : public nsAutoLockBase { 136 134 private: 137 PRLock* mLock;138 135 /** The IPRT fast mutex. */ 139 136 RTSEMFASTMUTEX m_hMtx; 140 PRBool mLocked;137 bool m_fLocked; 141 138 142 139 // Not meant to be implemented. This makes it a compiler error to … … 157 154 * releases the lock. 158 155 * 159 * @param aLock A valid PRLock* returned from the NSPR's 160 * PR_NewLock() function. 156 * @param hMtx A valid IPRT fast mutex. 161 157 **/ 162 nsAutoLock(PRLock* aLock)163 : nsAutoLockBase(aLock, eAutoLock),164 mLock(aLock),165 m_hMtx(NIL_RTSEMFASTMUTEX),166 mLocked(PR_TRUE) {167 Assert(mLock);168 169 // This will assert deep in the bowels of NSPR if you attempt170 // to re-enter the lock.171 PR_Lock(mLock);172 }173 174 158 nsAutoLock(RTSEMFASTMUTEX hMtx) 175 159 : nsAutoLockBase(hMtx, eAutoLock), 176 mLock(NULL),177 160 m_hMtx(hMtx), 178 m Locked(PR_TRUE) {161 m_fLocked(true) { 179 162 Assert(hMtx != NIL_RTSEMFASTMUTEX); 180 181 163 RTSemFastMutexRequest(m_hMtx); 182 164 } 183 165 184 166 ~nsAutoLock(void) { 185 if (mLocked) 186 { 187 if (m_hMtx != NIL_RTSEMFASTMUTEX) 188 RTSemFastMutexRelease(m_hMtx); 189 else 190 PR_Unlock(mLock); 191 } 167 if (m_fLocked) 168 RTSemFastMutexRelease(m_hMtx); 192 169 } 193 170 … … 198 175 **/ 199 176 void lock() { 200 PR_ASSERT(!mLocked); 201 if (m_hMtx != NIL_RTSEMFASTMUTEX) 202 RTSemFastMutexRequest(m_hMtx); 203 else 204 PR_Lock(mLock); 205 mLocked = PR_TRUE; 177 Assert(!m_fLocked); 178 Assert(m_hMtx != NIL_RTSEMFASTMUTEX); 179 RTSemFastMutexRequest(m_hMtx); 180 m_fLocked = true; 206 181 } 207 182 … … 213 188 **/ 214 189 void unlock() { 215 PR_ASSERT(mLocked); 216 if (m_hMtx != NIL_RTSEMFASTMUTEX) 217 RTSemFastMutexRelease(m_hMtx); 218 else 219 PR_Unlock(mLock); 220 mLocked = PR_FALSE; 190 Assert(m_fLocked); 191 Assert(m_hMtx != NIL_RTSEMFASTMUTEX); 192 RTSemFastMutexRelease(m_hMtx); 193 m_fLocked = false; 221 194 } 222 195 };
Note:
See TracChangeset
for help on using the changeset viewer.