I have lost count of the number of times I've been trying to debug
something in e-calendar-factory, but the factory I'm running in gdb is
*not* the one that's actually being used.

Sometimes I forget to kill the old factory. Sometimes I *do* kill it,
but Evolution, *while* complaining that calendars will never work again,
automatically starts a replacement (that it will never use).

This patch should allow replacement simply by running a new factory
process. This will upset Evolution, because its existing factory will go
away. But users should never be doing that anyway; this is only for
debugging. And it should make debugging a *lot* easier.

Comments?

diff --git a/addressbook/libedata-book/e-data-book-factory.c 
b/addressbook/libedata-book/e-data-book-factory.c
index b8aa145..4779d82 100644
--- a/addressbook/libedata-book/e-data-book-factory.c
+++ b/addressbook/libedata-book/e-data-book-factory.c
@@ -574,6 +574,8 @@ on_name_lost (GDBusConnection *connection,
        }
 
        g_mutex_unlock (factory->priv->connections_lock);
+       g_print ("Superseded...\n");
+       g_main_loop_quit (loop);
 }
 
 #ifndef G_OS_WIN32
@@ -667,7 +669,7 @@ main (gint argc, gchar **argv)
 
        owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
                ADDRESS_BOOK_DBUS_SERVICE_NAME,
-               G_BUS_NAME_OWNER_FLAGS_NONE,
+               G_BUS_NAME_OWNER_FLAGS_REPLACE | 
G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT,
                on_bus_acquired,
                on_name_acquired,
                on_name_lost,
diff --git a/calendar/libedata-cal/e-data-cal-factory.c 
b/calendar/libedata-cal/e-data-cal-factory.c
index 0b02e42..3af0ab6 100644
--- a/calendar/libedata-cal/e-data-cal-factory.c
+++ b/calendar/libedata-cal/e-data-cal-factory.c
@@ -891,6 +891,8 @@ on_name_lost (GDBusConnection *connection,
                g_list_foreach (copy, remove_data_cal_cb, NULL);
                g_list_free (copy);
        }
+       g_print ("Superseded...\n");
+       g_main_loop_quit (loop);
 }
 
 #ifndef G_OS_WIN32
@@ -992,7 +994,7 @@ main (gint argc, gchar **argv)
 
        owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
                CALENDAR_DBUS_SERVICE_NAME,
-               G_BUS_NAME_OWNER_FLAGS_NONE,
+               G_BUS_NAME_OWNER_FLAGS_REPLACE | 
G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT,
                on_bus_acquired,
                on_name_acquired,
                on_name_lost,


-- 
dwmw2


_______________________________________________
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers

Reply via email to