From: Michael Meeks Date: Tue, 3 Jan 2006 10:24:07 +0000 (+0000) Subject: new method to determine if the current thread is the owner of the context. X-Git-Tag: GLIB_2_9_2~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d2555b65ee8d686c185a17e488bdbdb9753f1269;p=platform%2Fupstream%2Fglib.git new method to determine if the current thread is the owner of the context. 2005-12-20 Michael Meeks * glib/gmain.c (g_main_context_is_owner): new method to determine if the current thread is the owner of the context. --- diff --git a/ChangeLog b/ChangeLog index 6fd5286..a1e9ba2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-12-20 Michael Meeks + + * 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 * glib/glib.symbols: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 6fd5286..a1e9ba2 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +2005-12-20 Michael Meeks + + * 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 * glib/glib.symbols: diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 6fd5286..a1e9ba2 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,9 @@ +2005-12-20 Michael Meeks + + * 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 * glib/glib.symbols: diff --git a/glib/gmain.c b/glib/gmain.c index 0595015..14e158a 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -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