dbus/glib dbus-gmain.c,1.37,1.38
David Zeuthen
david at freedesktop.org
Wed Apr 6 10:36:49 PDT 2005
Update of /cvs/dbus/dbus/glib
In directory gabe:/tmp/cvs-serv11388/glib
Modified Files:
dbus-gmain.c
Log Message:
2005-04-05 David Zeuthen <davidz at redhat.com>
Fix https://bugs.freedesktop.org/show_bug.cgi?id=2889
* glib/dbus-gmain.c:
(io_handler_destroy_source): Remove from list of IO handlers
of the ConnectionSetup object
(timeout_handler_destroy_source): -do- for timeout handlers
(io_handler_source_finalized): Don't remove from list since
we now do that in io_handler_destroy_source(). Renamed from
io_handler_source_destroyed
(timeout_handler_source_destroyed): -do- for timeout handlers
(connection_setup_free): It is now safe to iterate over all
IO and timeout handlers as the _destroy_source removes them
from the list synchronously
Index: dbus-gmain.c
===================================================================
RCS file: /cvs/dbus/dbus/glib/dbus-gmain.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- dbus-gmain.c 30 Jan 2005 23:06:32 -0000 1.37
+++ dbus-gmain.c 6 Apr 2005 17:36:47 -0000 1.38
@@ -166,14 +166,12 @@
}
static void
-io_handler_source_destroyed (gpointer data)
+io_handler_source_finalized (gpointer data)
{
IOHandler *handler;
handler = data;
- handler->cs->ios = g_slist_remove (handler->cs->ios, handler);
-
if (handler->watch)
dbus_watch_set_data (handler->watch, NULL, NULL);
@@ -191,6 +189,7 @@
{
GSource *source = handler->source;
handler->source = NULL;
+ handler->cs->ios = g_slist_remove (handler->cs->ios, handler);
g_source_destroy (source);
}
}
@@ -281,7 +280,7 @@
handler->source = g_io_create_watch (channel, condition);
g_source_set_callback (handler->source, (GSourceFunc) io_handler_dispatch, handler,
- io_handler_source_destroyed);
+ io_handler_source_finalized);
g_source_attach (handler->source, cs->context);
cs->ios = g_slist_prepend (cs->ios, handler);
@@ -304,14 +303,12 @@
}
static void
-timeout_handler_source_destroyed (gpointer data)
+timeout_handler_source_finalized (gpointer data)
{
TimeoutHandler *handler;
handler = data;
- handler->cs->timeouts = g_slist_remove (handler->cs->timeouts, handler);
-
if (handler->timeout)
dbus_timeout_set_data (handler->timeout, NULL, NULL);
@@ -329,6 +326,7 @@
{
GSource *source = handler->source;
handler->source = NULL;
+ handler->cs->timeouts = g_slist_remove (handler->cs->timeouts, handler);
g_source_destroy (source);
}
}
@@ -374,7 +372,7 @@
handler->source = g_timeout_source_new (dbus_timeout_get_interval (timeout));
g_source_set_callback (handler->source, timeout_handler_dispatch, handler,
- timeout_handler_source_destroyed);
+ timeout_handler_source_finalized);
g_source_attach (handler->source, handler->cs->context);
cs->timeouts = g_slist_prepend (cs->timeouts, handler);
More information about the dbus-commit
mailing list