From 22b3e26034017f19c81a3f2bfa7e9c8ec5a690a8 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Sat, 17 Sep 2011 17:59:03 -0400 Subject: [PATCH] Port g_mutex_new to use GSlice 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 | 21 --------------------- glib/gthread-win32.c | 21 --------------------- glib/gthread.c | 19 +++++++++++++++++++ 3 files changed, 19 insertions(+), 42 deletions(-) diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c index 1fcc3dd33..53ee362db 100644 --- a/glib/gthread-posix.c +++ b/glib/gthread-posix.c @@ -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) { diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c index a880e1042..91510c5e3 100644 --- a/glib/gthread-win32.c +++ b/glib/gthread-win32.c @@ -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) { diff --git a/glib/gthread.c b/glib/gthread.c index 2328ae06c..bcc29f886 100644 --- a/glib/gthread.c +++ b/glib/gthread.c @@ -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); +}