Port g_mutex_new to use GSlice
authorRyan Lortie <desrt@desrt.ca>
Sat, 17 Sep 2011 21:59:03 +0000 (17:59 -0400)
committerRyan Lortie <desrt@desrt.ca>
Wed, 21 Sep 2011 20:06:49 +0000 (16:06 -0400)
Now that nothing inside of GLib is using g_mutex_new, we can implement
it using GSlice.  Since the implementations for POSIX and Windows are
now the same, move it to gthread.c.

glib/gthread-posix.c
glib/gthread-win32.c
glib/gthread.c

index 1fcc3dd..53ee362 100644 (file)
@@ -225,27 +225,6 @@ g_cond_timedwait (GCond  *cond,
 
 /* {{{1 new/free API */
 
-GMutex *
-g_mutex_new (void)
-{
-  GMutex *mutex;
-
-  /* malloc() is temporary until all libglib users are ported away */
-  mutex = malloc (sizeof (GMutex));
-  if G_UNLIKELY (mutex == NULL)
-    g_thread_abort (errno, "malloc");
-  g_mutex_init (mutex);
-
-  return mutex;
-}
-
-void
-g_mutex_free (GMutex *mutex)
-{
-  g_mutex_clear (mutex);
-  free (mutex);
-}
-
 GCond *
 g_cond_new (void)
 {
index a880e10..91510c5 100644 (file)
@@ -253,27 +253,6 @@ g_cond_timed_wait (GCond    *cond,
 }
 
 /* {{{1 new/free API */
-GMutex *
-g_mutex_new (void)
-{
-  GMutex *mutex;
-
-  /* malloc() is temporary until all libglib users are ported away */
-  mutex = malloc (sizeof (GMutex));
-  if G_UNLIKELY (mutex == NULL)
-    g_thread_abort (errno, "malloc");
-  g_mutex_init (mutex);
-
-  return mutex;
-}
-
-void
-g_mutex_free (GMutex *mutex)
-{
-  g_mutex_clear (mutex);
-  free (mutex);
-}
-
 GCond *
 g_cond_new (void)
 {
index 2328ae0..bcc29f8 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "gthread.h"
 #include "gthreadprivate.h"
+#include "gslice.h"
 #include "gmain.h"
 
 #ifdef HAVE_UNISTD_H
@@ -2575,3 +2576,21 @@ g_thread_get_initialized ()
 {
   return g_thread_supported ();
 }
+
+GMutex *
+g_mutex_new (void)
+{
+  GMutex *mutex;
+
+  mutex = g_slice_new (GMutex);
+  g_mutex_init (mutex);
+
+  return mutex;
+}
+
+void
+g_mutex_free (GMutex *mutex)
+{
+  g_mutex_clear (mutex);
+  g_slice_free (GMutex, mutex);
+}