aboutsummaryrefslogtreecommitdiffstats
path: root/meta-moblin/packages/mutter-moblin/files/startup-notify.patch
blob: 72ad42cd98515fd46aaca37e1e7df4799bbc2257 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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 <dbus/dbus.h>
+
+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