mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-10-05 05:09:21 +02:00
Fix handling of user data when locating sources. (#60414, Katsuhiro Okuno)
Wed Sep 19 16:35:22 2001 Owen Taylor <otaylor@redhat.com> * glib/gmain.c (g_main_context_find_source_by[_funcs]_user_data): Fix handling of user data when locating sources. (#60414, Katsuhiro Okuno)
This commit is contained in:
28
glib/gmain.c
28
glib/gmain.c
@@ -1381,8 +1381,16 @@ g_main_context_find_source_by_funcs_user_data (GMainContext *context,
|
||||
{
|
||||
if (!SOURCE_DESTROYED (source) &&
|
||||
source->source_funcs == funcs &&
|
||||
source->callback_data == user_data)
|
||||
break;
|
||||
source->callback_funcs)
|
||||
{
|
||||
GSourceFunc callback;
|
||||
gpointer callback_data;
|
||||
|
||||
source->callback_funcs->get (source->callback_data, source, &callback, &callback_data);
|
||||
|
||||
if (callback_data == user_data)
|
||||
break;
|
||||
}
|
||||
source = source->next;
|
||||
}
|
||||
|
||||
@@ -1417,8 +1425,16 @@ g_main_context_find_source_by_user_data (GMainContext *context,
|
||||
while (source)
|
||||
{
|
||||
if (!SOURCE_DESTROYED (source) &&
|
||||
source->callback_data == user_data)
|
||||
break;
|
||||
source->callback_funcs)
|
||||
{
|
||||
GSourceFunc callback;
|
||||
gpointer callback_data = NULL;
|
||||
|
||||
source->callback_funcs->get (source->callback_data, source, &callback, &callback_data);
|
||||
|
||||
if (callback_data == user_data)
|
||||
break;
|
||||
}
|
||||
source = source->next;
|
||||
}
|
||||
|
||||
@@ -1592,11 +1608,11 @@ g_main_dispatch (GMainContext *context)
|
||||
was_in_call = source->flags & G_HOOK_FLAG_IN_CALL;
|
||||
source->flags |= G_HOOK_FLAG_IN_CALL;
|
||||
|
||||
UNLOCK_CONTEXT (context);
|
||||
|
||||
if (cb_funcs)
|
||||
cb_funcs->get (cb_data, source, &callback, &user_data);
|
||||
|
||||
UNLOCK_CONTEXT (context);
|
||||
|
||||
need_destroy = ! dispatch (source,
|
||||
callback,
|
||||
user_data);
|
||||
|
Reference in New Issue
Block a user