new method to determine if the current thread is the owner of the context.

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.
This commit is contained in:
Michael Meeks 2006-01-03 10:24:07 +00:00 committed by Michael Meeks
parent a5a39466a1
commit d2555b65ee
4 changed files with 48 additions and 0 deletions

View 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> 2006-01-02 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols: * glib/glib.symbols:

View 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> 2006-01-02 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols: * glib/glib.symbols:

View 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> 2006-01-02 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols: * glib/glib.symbols:

View File

@ -3156,6 +3156,36 @@ g_main_context_wakeup (GMainContext *context)
UNLOCK_CONTEXT (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 */ /* Timeouts */
static void static void