new method to determine if the current thread is the owner of the context.
authorMichael Meeks <michael.meeks@novell.com>
Tue, 3 Jan 2006 10:24:07 +0000 (10:24 +0000)
committerMichael Meeks <michael@src.gnome.org>
Tue, 3 Jan 2006 10:24:07 +0000 (10:24 +0000)
2005-12-20  Michael Meeks  <michael.meeks@novell.com>

* glib/gmain.c (g_main_context_is_owner): new method
to determine if the current thread is the owner of the
context.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
glib/gmain.c

index 6fd5286..a1e9ba2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-12-20  Michael Meeks  <michael.meeks@novell.com>
+
+       * glib/gmain.c (g_main_context_is_owner): new method
+       to determine if the current thread is the owner of the
+       context.
+
 2006-01-02  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/glib.symbols: 
index 6fd5286..a1e9ba2 100644 (file)
@@ -1,3 +1,9 @@
+2005-12-20  Michael Meeks  <michael.meeks@novell.com>
+
+       * glib/gmain.c (g_main_context_is_owner): new method
+       to determine if the current thread is the owner of the
+       context.
+
 2006-01-02  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/glib.symbols: 
index 6fd5286..a1e9ba2 100644 (file)
@@ -1,3 +1,9 @@
+2005-12-20  Michael Meeks  <michael.meeks@novell.com>
+
+       * glib/gmain.c (g_main_context_is_owner): new method
+       to determine if the current thread is the owner of the
+       context.
+
 2006-01-02  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/glib.symbols: 
index 0595015..14e158a 100644 (file)
@@ -3156,6 +3156,36 @@ g_main_context_wakeup (GMainContext *context)
   UNLOCK_CONTEXT (context);
 }
 
+/**
+ * g_main_context_is_owner:
+ * @context: a #GMainContext
+ * 
+ * Determines whether this thread holds the (recursive)
+ * ownership of this #GMaincontext. This is useful to
+ * know before waiting on another thread that may be
+ * blocking to get ownership of @context.
+ *
+ * Returns: TRUE if current thread is owner of @context.
+ **/
+gboolean
+g_main_context_is_owner (GMainContext *context)
+{
+  gboolean is_owner;
+
+  if (!context)
+    context = g_main_context_default ();
+
+#ifdef G_THREADS_ENABLED
+  LOCK_CONTEXT (context);
+  is_owner = context->owner == G_THREAD_SELF;
+  UNLOCK_CONTEXT (context);
+#else
+  is_owner = TRUE;
+#endif
+
+  return is_owner;
+}
+
 /* Timeouts */
 
 static void