cMutex.cpp

00001 // Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones
00002 // This file is part of the "cAudio Engine"
00003 // For conditions of distribution and use, see copyright notice in cAudio.h
00004 
00005 #include "../Headers/cMutex.h"
00006 
00007 namespace cAudio
00008 {
00009 #ifdef CAUDIO_MAKE_THREAD_SAFE
00010         cAudioMutex::cAudioMutex() : Initialized(false)
00011         {
00012         }
00013 
00014         cAudioMutex::~cAudioMutex()
00015         {
00016                 if(!Initialized)
00017                         return;
00018                 #ifdef CAUDIO_PLATFORM_WIN
00019                 DeleteCriticalSection(&criticalSection);
00020                 #else
00021                 pthread_mutex_destroy(&Mutex);
00022                 #endif
00023         }
00024 
00025         void cAudioMutex::lock(void)
00026         {
00027                 if(!Initialized)
00028                         initialize();
00029 
00030         #ifdef CAUDIO_PLATFORM_WIN
00031                 EnterCriticalSection(&criticalSection);
00032         #else
00033                 int error = pthread_mutex_lock(&Mutex);
00034         #endif
00035         }
00036 
00037         void cAudioMutex::unlock(void)
00038         {
00039                 if(!Initialized)
00040                         return;
00041         #ifdef CAUDIO_PLATFORM_WIN
00042                 LeaveCriticalSection(&criticalSection);
00043         #else
00044                 int error = pthread_mutex_unlock(&Mutex);
00045         #endif
00046         }
00047 
00048         void cAudioMutex::initialize(void)
00049         {
00050         #ifdef CAUDIO_PLATFORM_WIN
00051                 InitializeCriticalSection(&criticalSection);
00052         #else
00053                 pthread_mutexattr_t attr;
00054                 int error = pthread_mutexattr_init(&attr);
00055                 error = pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
00056                 error = pthread_mutex_init(&Mutex, &attr);
00057                 error = pthread_mutexattr_destroy(&attr);
00058         #endif
00059                 Initialized=true;
00060         }
00061 #else
00062         cAudioMutex::cAudioMutex() : Initialized(false)
00063         {
00064         }
00065 
00066         cAudioMutex::~cAudioMutex()
00067         {
00068                 //Do nothing
00069         }
00070 
00071         void cAudioMutex::lock(void)
00072         {
00073                 //Do nothing
00074         }
00075 
00076         void cAudioMutex::unlock(void)
00077         {
00078                 //Do nothing
00079         }
00080 
00081         void cAudioMutex::initialize(void)
00082         {
00083                 //Do nothing
00084         }
00085 #endif
00086 
00087 };
 All Classes Namespaces Functions Variables Enumerations

Generated on Sat Feb 20 22:55:09 2010 for cAudio by  doxygen 1.6.2