Merge branch 'context-checks' into 'main'

gmain: More explicitly document g_main_context_release() prereqs

See merge request GNOME/glib!3314
This commit is contained in:
Philip Withnall 2023-04-24 12:52:51 +00:00
commit d3e7b9e17c

View File

@ -3525,7 +3525,7 @@ g_main_dispatch (GMainContext *context)
*
* You must be the owner of a context before you
* can call g_main_context_prepare(), g_main_context_query(),
* g_main_context_check(), g_main_context_dispatch().
* g_main_context_check(), g_main_context_dispatch(), g_main_context_release().
*
* Since 2.76 @context can be %NULL to use the global-default
* main context.
@ -3583,6 +3583,9 @@ g_main_context_acquire_unlocked (GMainContext *context)
* with g_main_context_acquire(). If the context was acquired multiple
* times, the ownership will be released only when g_main_context_release()
* is called as many times as it was acquired.
*
* You must have successfully acquired the context with
* g_main_context_acquire() before you may call this function.
**/
void
g_main_context_release (GMainContext *context)
@ -3592,6 +3595,20 @@ g_main_context_release (GMainContext *context)
LOCK_CONTEXT (context);
#ifndef G_DISABLE_CHECKS
if (G_UNLIKELY (context->owner != G_THREAD_SELF || context->owner_count == 0))
{
GThread *context_owner = context->owner;
guint context_owner_count = context->owner_count;
UNLOCK_CONTEXT (context);
g_critical ("g_main_context_release() called on a context (%p, owner %p, "
"owner count %u) which is not acquired by the current thread",
context, context_owner, context_owner_count);
}
#endif /* !G_DISABLE_CHECKS */
g_main_context_release_unlocked (context);
UNLOCK_CONTEXT (context);