From fd248f087bc4cbc7bcf01065bc81048b34641b4e Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 21 Mar 2004 09:30:15 +0000 Subject: [PATCH] fix false positives --- stepmania/src/RageThreads.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/stepmania/src/RageThreads.cpp b/stepmania/src/RageThreads.cpp index ebc9226c54..97356d8285 100644 --- a/stepmania/src/RageThreads.cpp +++ b/stepmania/src/RageThreads.cpp @@ -800,8 +800,8 @@ void RageMutex::MarkLockedMutex() * then we have an inconsistent lock order. */ if( g_MutexesBefore[mutex->m_UniqueID][this->m_UniqueID] ) { -// LOG->Warn( "Mutex lock inconsistency: mutex \"%s\" must be locked before \"%s\"", -// this->GetName().c_str(), mutex->GetName().c_str() ); + LOG->Warn( "Mutex lock inconsistency: mutex \"%s\" must be locked before \"%s\"", + this->GetName().c_str(), mutex->GetName().c_str() ); break; } @@ -873,8 +873,13 @@ RageMutex::~RageMutex() void RageMutex::Lock() { + const bool bWasLocked = mut->IsLockedByThisThread(); + mut->Lock(); - MarkLockedMutex(); + + /* Only do lock ordering checks on initial locks, to prevent false positives. */ + if( !bWasLocked ) + MarkLockedMutex(); } void RageMutex::Unlock()