static void emit(SpiDEController *controller, const char *interface, const char *name, const char *minor, int a1, int a2)
{
DBusMessage *signal = NULL;
- DBusMessageIter iter, iter_variant;
+ DBusMessageIter iter, iter_struct, iter_variant;
int nil = 0;
- const char *path = SPI_DBUS_PATH_DESKTOP;
+ const char *path = SPI_DBUS_PATH_ROOT;
+ const char *bus_name = dbus_bus_get_unique_name (controller->bus);
signal = dbus_message_new_signal (path, interface, name);
dbus_message_iter_init_append (signal, &iter);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_STRUCT, NULL,
+ &iter_struct);
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &bus_name);
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_OBJECT_PATH, &path);
+ dbus_message_iter_close_container (&iter, &iter_struct);
+
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &minor);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &a1);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &a2);