diff --git a/configure.ac b/configure.ac index 2a03c62c3ea598295d9571f582e20a311014f939..8116192347c43f39788666ac9507a64d7b45e44c 100644 --- a/configure.ac +++ b/configure.ac @@ -273,6 +273,12 @@ dnl Datadir directory sflphone_datadir=$datadir/sflphone AC_SUBST(sflphone_datadir) +dnl Dbus Service activation part +DBUS_SERVICES_DIR="$datadir/dbus-1/services" +AC_SUBST(DBUS_SERVICES_DIR) +AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is]) + + dnl QT interface AC_MSG_CHECKING([whether to enable sflphoneqt]) AC_ARG_ENABLE(sflphoneqt, diff --git a/m4/dbus.m4 b/m4/dbus.m4 new file mode 100644 index 0000000000000000000000000000000000000000..0c71173933f8c7a9f6b95a272b97b97df24f99ee --- /dev/null +++ b/m4/dbus.m4 @@ -0,0 +1,40 @@ +dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR) +dnl +dnl example +dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir) +dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local + +AC_DEFUN([AS_AC_EXPAND], +[ + EXP_VAR=[$1] + FROM_VAR=[$2] + + dnl first expand prefix and exec_prefix if necessary + prefix_save=$prefix + exec_prefix_save=$exec_prefix + + dnl if no prefix given, then use /usr/local, the default prefix + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + fi + dnl if no exec_prefix given, then use prefix + if test "x$exec_prefix" = "xNONE"; then + exec_prefix=$prefix + fi + + full_var="$FROM_VAR" + dnl loop until it doesn't change anymore + while true; do + new_full_var="`eval echo $full_var`" + if test "x$new_full_var"="x$full_var"; then break; fi + full_var=$new_full_var + done + + dnl clean up + full_var=$new_full_var + AC_SUBST([$1], "$full_var") + + dnl restore prefix and exec_prefix + prefix=$prefix_save + exec_prefix=$exec_prefix_save +]) diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c index 8204766b6a657b93d631ff392ec084cfffe8aa5f..4ee4a2f53d166f8bb3f1d54ca9ce910750b3f5cb 100644 --- a/sflphone-gtk/src/dbus.c +++ b/sflphone-gtk/src/dbus.c @@ -166,16 +166,13 @@ dbus_connect () /* Create a proxy object for the "bus driver" (name "org.freedesktop.DBus") */ - callManagerProxy = dbus_g_proxy_new_for_name_owner (connection, + callManagerProxy = dbus_g_proxy_new_for_name (connection, "org.sflphone.SFLphone", "/org/sflphone/SFLphone/CallManager", - "org.sflphone.SFLphone.CallManager", - &error); - if (error) + "org.sflphone.SFLphone.CallManager"); + if (!callManagerProxy) { - g_printerr ("Failed to get proxy to CallManager: %s\n", - error->message); - g_error_free (error); + g_printerr ("Failed to get proxy to CallManagers\n"); return FALSE; } @@ -215,19 +212,16 @@ dbus_connect () dbus_g_proxy_connect_signal (callManagerProxy, "volumeChanged", G_CALLBACK(volume_changed_cb), NULL, NULL); - configurationManagerProxy = dbus_g_proxy_new_for_name_owner (connection, + configurationManagerProxy = dbus_g_proxy_new_for_name (connection, "org.sflphone.SFLphone", "/org/sflphone/SFLphone/ConfigurationManager", - "org.sflphone.SFLphone.ConfigurationManager", - &error); - if (error) + "org.sflphone.SFLphone.ConfigurationManager"); + if (!configurationManagerProxy) { - g_printerr ("Failed to get proxy to ConfigurationManager: %s\n", - error->message); - g_error_free (error); + g_printerr ("Failed to get proxy to ConfigurationManager\n"); return FALSE; } - + g_print ("DBus connected to ConfigurationManager\n"); dbus_g_proxy_add_signal (configurationManagerProxy, "accountsChanged", G_TYPE_INVALID); dbus_g_proxy_connect_signal (configurationManagerProxy, @@ -375,12 +369,16 @@ dbus_place_call (const call_t * c) gchar ** dbus_account_list() { + g_print("Before"); + GError *error = NULL; char ** array; org_sflphone_SFLphone_ConfigurationManager_get_account_list ( configurationManagerProxy, &array, &error); + + g_print("After"); if (error) { g_printerr ("Failed to call get_account_list() on ConfigurationManager: %s\n", diff --git a/src/dbus/Makefile.am b/src/dbus/Makefile.am index f6d309e0bbe52ad537dacc95dddff16ccc10bef8..a556f250429371c06b85e29de3eb2b6723fc5d02 100644 --- a/src/dbus/Makefile.am +++ b/src/dbus/Makefile.am @@ -19,3 +19,13 @@ noinst_HEADERS = \ configurationmanager.h \ dbusmanager.h \ dbusmanagerimpl.h + +# Dbus service file +servicedir = $(DBUS_SERVICES_DIR) +service_in_files = org.sflphone.SFLphone.service.in +service_DATA = $(service_in_files:.service.in=.service) + +# Rule to make the service file with bindir expanded +$(service_DATA): $(service_in_files) Makefile + sed -e "s|bindir|$(prefix)/libexec|" $<> $@ + diff --git a/src/dbus/org.sflphone.SFLphone.service.in b/src/dbus/org.sflphone.SFLphone.service.in new file mode 100644 index 0000000000000000000000000000000000000000..9fcbcc97d59742778c6e444927cc9bcaa46610b1 --- /dev/null +++ b/src/dbus/org.sflphone.SFLphone.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.sflphone.SFLphone.CallManager +Exec=bindir/sflphoned