voice-event-forwarder.c 939 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include "module-voice-userdata.h"
  2. #include "voice-event-forwarder.h"
  3. static void clear_dbus_matches(struct cmtspeech_dbus_conn *e, DBusConnection *dbusconn)
  4. {
  5. int i;
  6. for(i = PA_ELEMENTSOF(e->dbus_match_rules) - 1; i >= 0; i--)
  7. {
  8. if (e->dbus_match_rules[i] == NULL)
  9. continue;
  10. dbus_bus_remove_match(dbusconn, e->dbus_match_rules[i], NULL);
  11. pa_log_debug("removed dbus match \"%s\"", e->dbus_match_rules[i]);
  12. pa_xfree(e->dbus_match_rules[i]);
  13. e->dbus_match_rules[i] = NULL;
  14. }
  15. }
  16. void voice_unload_event_forwarder(struct userdata *u)
  17. {
  18. DBusConnection *dbusconn;
  19. struct cmtspeech_dbus_conn *e = &u->cmt_dbus_conn;
  20. if (!e->dbus_conn)
  21. return;
  22. dbusconn = pa_dbus_connection_get(e->dbus_conn);
  23. dbus_connection_remove_filter(dbusconn, voice_cmt_dbus_filter, u);
  24. clear_dbus_matches(e, dbusconn);
  25. pa_dbus_connection_unref(e->dbus_conn);
  26. }