Index: git/src/mnb-drop-down.c =================================================================== --- git.orig/src/mnb-drop-down.c 2009-06-09 16:38:46.000000000 +0100 +++ git/src/mnb-drop-down.c 2009-06-09 16:41:21.000000000 +0100 @@ -68,6 +68,37 @@ gboolean hide_toolbar : 1; }; + +#include + +static gboolean +emit_loaded_signal (gpointer user_data) +{ + DBusError error = DBUS_ERROR_INIT; + DBusConnection *conn; + DBusMessage *msg; + + conn = dbus_bus_get (DBUS_BUS_SYSTEM, &error); + if (!conn) { + g_printerr ("Cannot connect to system bus: %s", error.message); + dbus_error_free (&error); + return FALSE; + } + + msg = dbus_message_new_signal ("/", "org.matchbox_project.desktop", "Loaded"); + + dbus_connection_send (conn, msg, NULL); + dbus_message_unref (msg); + + /* Flush explicitly because we're too lazy to integrate DBus into the main + loop. We're only sending a signal, so if we got as far as here it's + unlikely to block. */ + dbus_connection_flush (conn); + dbus_connection_unref (conn); + + return FALSE; +} + static void mnb_drop_down_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) @@ -137,6 +168,8 @@ g_signal_emit (actor, dropdown_signals[SHOW_COMPLETED], 0); g_object_unref (actor); + + g_idle_add (emit_loaded_signal, NULL); } static void