#define MCE_SIGNAL_MATCH "type='signal'," \ "sender='" MCE_SERVICE "'," \ "path='" MCE_SIGNAL_PATH "'," \ "interface='" MCE_SIGNAL_IF "'"
sys_conn = osso_get_sys_dbus_connection(ctx); if (sys_conn) { DBusError error; dbus_error_init (&error); dbus_bus_add_match (sys_conn, MCE_SIGNAL_MATCH, &error); if (dbus_error_is_set(&error)){ printf("dbus_bus_add_match failed: %s\n", error.message); dbus_error_free(&error); } if (!dbus_connection_add_filter (sys_conn, (DBusHandleMessageFunction) mce_filter_func, NULL, NULL)) { printf("Error dbus_connection_add_filter failed\n"); } else { printf ("DBUS filter added\n"); }` }
DBusHandlerResult mce_filter_func (DBusConnection *connection, DBusMessage *message, void *data) { DBusMessageIter iter; const gchar *mode = NULL; printf ("MCE\n"); if (dbus_message_is_signal(message, MCE_SIGNAL_IF, MCE_DEVICE_ORIENTATION_SIG)) { printf ("is a orientation signal\n"); if (dbus_message_iter_init(message, &iter)) { printf ("getting mode\n"); dbus_message_iter_get_basic(&iter, &mode); hildon_rotate_ui (mode); } } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; }