Use a static mutex for the default Clutter lock
authorEmmanuele Bassi <ebassi@linux.intel.com>
Fri, 7 Oct 2011 14:08:27 +0000 (15:08 +0100)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Fri, 7 Oct 2011 14:10:37 +0000 (15:10 +0100)
The Big Clutter Lockā„¢ can now be a static GMutex, since GLib supports
them. We can also drop a bunch of checks given the recent changes in
GLib threading API.

clutter/clutter-main.c

index 461c87d..9fe9acd 100644 (file)
@@ -119,7 +119,7 @@ static ClutterMainContext *ClutterCntx       = NULL;
 G_LOCK_DEFINE_STATIC (ClutterCntx);
 
 /* main lock and locking/unlocking functions */
-static GMutex *clutter_threads_mutex         = NULL;
+static GMutex clutter_threads_mutex;
 static GCallback clutter_threads_lock        = NULL;
 static GCallback clutter_threads_unlock      = NULL;
 
@@ -694,15 +694,13 @@ clutter_main (void)
 static void
 clutter_threads_impl_lock (void)
 {
-  if (G_LIKELY (clutter_threads_mutex != NULL))
-    g_mutex_lock (clutter_threads_mutex);
+  g_mutex_lock (&clutter_threads_mutex);
 }
 
 static void
 clutter_threads_impl_unlock (void)
 {
-  if (G_LIKELY (clutter_threads_mutex != NULL))
-    g_mutex_unlock (clutter_threads_mutex);
+  g_mutex_unlock (&clutter_threads_mutex);
 }
 
 /**
@@ -723,18 +721,10 @@ clutter_threads_impl_unlock (void)
 void
 clutter_threads_init (void)
 {
-  if (!g_thread_supported ())
-    g_error ("g_thread_init() must be called before clutter_threads_init()");
-
-  if (clutter_threads_mutex != NULL)
-    return;
-
-  clutter_threads_mutex = g_mutex_new ();
-
-  if (!clutter_threads_lock)
+  if (clutter_threads_lock == NULL)
     clutter_threads_lock = clutter_threads_impl_lock;
 
-  if (!clutter_threads_unlock)
+  if (clutter_threads_unlock == NULL)
     clutter_threads_unlock = clutter_threads_impl_unlock;
 }