diff src/thread/pthread/SDL_sysmutex.c @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents d910939febfa
children 4da1ee79c9af
line wrap: on
line diff
--- a/src/thread/pthread/SDL_sysmutex.c	Sun May 21 17:27:13 2006 +0000
+++ b/src/thread/pthread/SDL_sysmutex.c	Sun May 28 13:04:16 2006 +0000
@@ -30,124 +30,131 @@
 #define FAKE_RECURSIVE_MUTEX
 #endif
 
-struct SDL_mutex {
-	pthread_mutex_t id;
+struct SDL_mutex
+{
+    pthread_mutex_t id;
 #if FAKE_RECURSIVE_MUTEX
-	int recursive;
-	pthread_t owner;
+    int recursive;
+    pthread_t owner;
 #endif
 };
 
-SDL_mutex *SDL_CreateMutex (void)
+SDL_mutex *
+SDL_CreateMutex (void)
 {
-	SDL_mutex *mutex;
-	pthread_mutexattr_t attr;
+    SDL_mutex *mutex;
+    pthread_mutexattr_t attr;
 
-	/* Allocate the structure */
-	mutex = (SDL_mutex *)SDL_calloc(1, sizeof(*mutex));
-	if ( mutex ) {
-		pthread_mutexattr_init(&attr);
+    /* Allocate the structure */
+    mutex = (SDL_mutex *) SDL_calloc (1, sizeof (*mutex));
+    if (mutex) {
+        pthread_mutexattr_init (&attr);
 #if SDL_THREAD_PTHREAD_RECURSIVE_MUTEX
-		pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+        pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
 #elif SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP
-		pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
+        pthread_mutexattr_setkind_np (&attr, PTHREAD_MUTEX_RECURSIVE_NP);
 #else
-		/* No extra attributes necessary */
+        /* No extra attributes necessary */
 #endif
-		if ( pthread_mutex_init(&mutex->id, &attr) != 0 ) {
-			SDL_SetError("pthread_mutex_init() failed");
-			SDL_free(mutex);
-			mutex = NULL;
-		}
-	} else {
-		SDL_OutOfMemory();
-	}
-	return(mutex);
+        if (pthread_mutex_init (&mutex->id, &attr) != 0) {
+            SDL_SetError ("pthread_mutex_init() failed");
+            SDL_free (mutex);
+            mutex = NULL;
+        }
+    } else {
+        SDL_OutOfMemory ();
+    }
+    return (mutex);
 }
 
-void SDL_DestroyMutex(SDL_mutex *mutex)
+void
+SDL_DestroyMutex (SDL_mutex * mutex)
 {
-	if ( mutex ) {
-		pthread_mutex_destroy(&mutex->id);
-		SDL_free(mutex);
-	}
+    if (mutex) {
+        pthread_mutex_destroy (&mutex->id);
+        SDL_free (mutex);
+    }
 }
 
 /* Lock the mutex */
-int SDL_mutexP(SDL_mutex *mutex)
+int
+SDL_mutexP (SDL_mutex * mutex)
 {
-	int retval;
+    int retval;
 #if FAKE_RECURSIVE_MUTEX
-	pthread_t this_thread;
+    pthread_t this_thread;
 #endif
 
-	if ( mutex == NULL ) {
-		SDL_SetError("Passed a NULL mutex");
-		return -1;
-	}
+    if (mutex == NULL) {
+        SDL_SetError ("Passed a NULL mutex");
+        return -1;
+    }
 
-	retval = 0;
+    retval = 0;
 #if FAKE_RECURSIVE_MUTEX
-	this_thread = pthread_self();
-	if ( mutex->owner == this_thread ) {
-		++mutex->recursive;
-	} else {
-		/* The order of operations is important.
-		   We set the locking thread id after we obtain the lock
-		   so unlocks from other threads will fail.
-		*/
-		if ( pthread_mutex_lock(&mutex->id) == 0 ) {
-			mutex->owner = this_thread;
-			mutex->recursive = 0;
-		} else {
-			SDL_SetError("pthread_mutex_lock() failed");
-			retval = -1;
-		}
-	}
+    this_thread = pthread_self ();
+    if (mutex->owner == this_thread) {
+        ++mutex->recursive;
+    } else {
+        /* The order of operations is important.
+           We set the locking thread id after we obtain the lock
+           so unlocks from other threads will fail.
+         */
+        if (pthread_mutex_lock (&mutex->id) == 0) {
+            mutex->owner = this_thread;
+            mutex->recursive = 0;
+        } else {
+            SDL_SetError ("pthread_mutex_lock() failed");
+            retval = -1;
+        }
+    }
 #else
-	if ( pthread_mutex_lock(&mutex->id) < 0 ) {
-		SDL_SetError("pthread_mutex_lock() failed");
-		retval = -1;
-	}
+    if (pthread_mutex_lock (&mutex->id) < 0) {
+        SDL_SetError ("pthread_mutex_lock() failed");
+        retval = -1;
+    }
 #endif
-	return retval;
+    return retval;
 }
 
-int SDL_mutexV(SDL_mutex *mutex)
+int
+SDL_mutexV (SDL_mutex * mutex)
 {
-	int retval;
+    int retval;
 
-	if ( mutex == NULL ) {
-		SDL_SetError("Passed a NULL mutex");
-		return -1;
-	}
+    if (mutex == NULL) {
+        SDL_SetError ("Passed a NULL mutex");
+        return -1;
+    }
 
-	retval = 0;
+    retval = 0;
 #if FAKE_RECURSIVE_MUTEX
-	/* We can only unlock the mutex if we own it */
-	if ( pthread_self() == mutex->owner ) {
-		if ( mutex->recursive ) {
-			--mutex->recursive;
-		} else {
-			/* The order of operations is important.
-			   First reset the owner so another thread doesn't lock
-			   the mutex and set the ownership before we reset it,
-			   then release the lock semaphore.
-			 */
-			mutex->owner = 0;
-			pthread_mutex_unlock(&mutex->id);
-		}
-	} else {
-		SDL_SetError("mutex not owned by this thread");
-		retval = -1;
-	}
+    /* We can only unlock the mutex if we own it */
+    if (pthread_self () == mutex->owner) {
+        if (mutex->recursive) {
+            --mutex->recursive;
+        } else {
+            /* The order of operations is important.
+               First reset the owner so another thread doesn't lock
+               the mutex and set the ownership before we reset it,
+               then release the lock semaphore.
+             */
+            mutex->owner = 0;
+            pthread_mutex_unlock (&mutex->id);
+        }
+    } else {
+        SDL_SetError ("mutex not owned by this thread");
+        retval = -1;
+    }
 
 #else
-	if ( pthread_mutex_unlock(&mutex->id) < 0 ) {
-		SDL_SetError("pthread_mutex_unlock() failed");
-		retval = -1;
-	}
+    if (pthread_mutex_unlock (&mutex->id) < 0) {
+        SDL_SetError ("pthread_mutex_unlock() failed");
+        retval = -1;
+    }
 #endif /* FAKE_RECURSIVE_MUTEX */
 
-	return retval;
+    return retval;
 }
+
+/* vi: set ts=4 sw=4 expandtab: */