extensions/sqlite/driver/SqDriver.cpp
changeset 4040 b6924c1a1d71
parent 3261 e4359292e59a
     1.1 --- a/extensions/sqlite/driver/SqDriver.cpp	Fri Aug 23 00:18:12 2013 -0700
     1.2 +++ b/extensions/sqlite/driver/SqDriver.cpp	Fri Aug 23 00:18:13 2013 -0700
     1.3 @@ -1,5 +1,5 @@
     1.4  /**
     1.5 - * vim: set ts=4 :
     1.6 + * vim: set ts=4 sw=4 tw=99 noet :
     1.7   * =============================================================================
     1.8   * SourceMod SQLite Extension
     1.9   * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
    1.10 @@ -66,24 +66,16 @@
    1.11  SqDriver::SqDriver()
    1.12  {
    1.13  	m_Handle = BAD_HANDLE;
    1.14 -	m_pOpenLock = NULL;
    1.15  	m_bThreadSafe = false;
    1.16  }
    1.17  
    1.18  void SqDriver::Initialize()
    1.19  {
    1.20 -	m_pOpenLock = threader->MakeMutex();
    1.21 -
    1.22  	InitializeThreadSafety();
    1.23  }
    1.24  
    1.25  void SqDriver::Shutdown()
    1.26  {
    1.27 -	if (m_pOpenLock)
    1.28 -	{
    1.29 -		m_pOpenLock->DestroyThis();
    1.30 -	}
    1.31 -
    1.32  	if (m_bThreadSafe)
    1.33  	{
    1.34  		sqlite3_enable_shared_cache(0);
    1.35 @@ -158,8 +150,7 @@
    1.36  
    1.37  IDatabase *SqDriver::Connect(const DatabaseInfo *info, bool persistent, char *error, size_t maxlength)
    1.38  {
    1.39 -	/* We wrap most of the open process in a mutex just to be safe */
    1.40 -	m_pOpenLock->Lock();
    1.41 +	ke::AutoLock lock(&m_OpenLock);
    1.42  
    1.43  	/* Format our path */
    1.44  	char path[PLATFORM_MAX_PATH];
    1.45 @@ -189,7 +180,6 @@
    1.46  			if (!libsys->CreateFolder(fullpath))
    1.47  			{
    1.48  				strncopy(error, "Could not create or open \"data\" folder\"", maxlength);
    1.49 -				m_pOpenLock->Unlock();
    1.50  				return NULL;
    1.51  			}
    1.52  		}
    1.53 @@ -237,7 +227,6 @@
    1.54  			if ((*iter).path.compare(fullpath) == 0)
    1.55  			{
    1.56  				(*iter).db->IncReferenceCount();
    1.57 -				m_pOpenLock->Unlock();
    1.58  				return (*iter).db;
    1.59  			}
    1.60  		}
    1.61 @@ -250,7 +239,6 @@
    1.62  	{
    1.63  		strncopy(error, sqlite3_errmsg(sql), maxlength);
    1.64  		sqlite3_close(sql);
    1.65 -		m_pOpenLock->Unlock();
    1.66  		return NULL;
    1.67  	}
    1.68  
    1.69 @@ -266,13 +254,13 @@
    1.70  		m_Cache.push_back(pinfo);
    1.71  	}
    1.72  
    1.73 -	m_pOpenLock->Unlock();
    1.74 -
    1.75  	return pdb;
    1.76  }
    1.77  
    1.78  void SqDriver::RemovePersistent(IDatabase *pdb)
    1.79  {
    1.80 +	ke::AutoLock lock(&m_OpenLock);
    1.81 +
    1.82  	List<SqDbInfo>::iterator iter;
    1.83  	for (iter = m_Cache.begin(); iter != m_Cache.end(); iter++)
    1.84  	{