static DBusHandlerResult mce_signal_filter (DBusConnection *connection, DBusMessage *msg, void *user_data) { (void) connection; (void) user_data; if (dbus_message_is_signal(msg, MCE_SIGNAL_IF, MCE_LED_PATTERN_DEACTIVATED_SIG)) { DBusError error; dbus_error_init(&error); gchar *pattern = NULL; if (!dbus_message_get_args(msg, &error, DBUS_TYPE_STRING, &pattern, DBUS_TYPE_INVALID)) { N_WARNING ("%s >> failed to read MCE signal arguments, cause: %s", __FUNCTION__, error.message); dbus_error_free(&error); } else { GList *event; N_DEBUG ("%s >> mce finished playing %s", __FUNCTION__, pattern); for (event = active_events; event != NULL; event = g_list_next(event)) { MceData *data = (MceData *) event->data; if (g_strcmp0(pattern, data->pattern) == 0) { n_sink_interface_complete(data->iface, data->request); N_DEBUG ("%s >> led pattern %s complete", __FUNCTION__, data->pattern); active_events = g_list_remove_all(active_events, data); break; } } } } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; }
static gboolean canberra_complete_cb (gpointer userdata) { CanberraData *data = (CanberraData*) userdata; data->complete_cb_id = 0; n_sink_interface_complete (data->iface, data->request); return FALSE; }