]> code.delx.au - pulseaudio/commitdiff
daemon: take org.pulseaudio
authorMarc-André Lureau <marc-andre.lureau@nokia.com>
Fri, 20 Mar 2009 16:39:30 +0000 (18:39 +0200)
committerMarc-André Lureau <marc-andre.lureau@nokia.com>
Mon, 30 Mar 2009 17:57:07 +0000 (20:57 +0300)
src/daemon/main.c

index 47ca267366aaf41f7f370d17e4f8bed848694f0c..1d5434815d9f692f82bebf121d103e8586cc01cf 100644 (file)
@@ -87,6 +87,9 @@
 #include <pulsecore/thread.h>
 #include <pulsecore/once.h>
 #include <pulsecore/shm.h>
+#ifdef HAVE_DBUS
+#include <pulsecore/dbus-shared.h>
+#endif
 
 #include "cmdline.h"
 #include "cpulimit.h"
@@ -330,6 +333,31 @@ static void set_all_rlimits(const pa_daemon_conf *conf) {
 }
 #endif
 
+#ifdef HAVE_DBUS
+static void register_org_pulseaudio(pa_core *c)
+{
+    DBusError error;
+    pa_dbus_connection *conn;
+
+    dbus_error_init(&error);
+    if (!(conn = pa_dbus_bus_get(c, pa_in_system_mode() ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION, &error)) || dbus_error_is_set(&error)) {
+        pa_log_warn("Unable to contact DBUS: %s: %s", error.name, error.message);
+        goto finish_dbus;
+    }
+
+    if (dbus_bus_request_name (pa_dbus_connection_get(conn), "org.pulseaudio", 0, &error) == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)
+        pa_log_debug("Got org.pulseaudio!");
+    else if (dbus_error_is_set(&error))
+        pa_log_warn("Unable to get org.pulseaudio: %s: %s", error.name, error.message);
+
+finish_dbus:
+    if (conn)
+        pa_dbus_connection_unref(conn);
+
+    dbus_error_free(&error);
+}
+#endif
+
 int main(int argc, char *argv[]) {
     pa_core *c = NULL;
     pa_strbuf *buf = NULL;
@@ -997,6 +1025,10 @@ int main(int argc, char *argv[]) {
     }
 #endif
 
+#ifdef HAVE_DBUS
+    register_org_pulseaudio(c);
+#endif
+
     pa_log_info(_("Daemon startup complete."));
 
     retval = 0;