[gnome-settings-daemon] power: Use separate D-Bus name



commit 61eef7d364e3867ebf06f00a3545cbca5a393c02
Author: Bastien Nocera <hadess hadess net>
Date:   Wed Dec 19 16:35:12 2012 +0100

    power: Use separate D-Bus name
    
    https://bugzilla.gnome.org/show_bug.cgi?id=688313

 plugins/power/gsd-power-manager.c |   42 +++++++++++++++++++++++++++++++-----
 1 files changed, 36 insertions(+), 6 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index a9c2d86..cc2e8e1 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -40,6 +40,7 @@
 
 #include "gpm-common.h"
 #include "gpm-phone.h"
+#include "gnome-settings-plugin.h"
 #include "gnome-settings-profile.h"
 #include "gnome-settings-session.h"
 #include "gsd-enums.h"
@@ -58,12 +59,11 @@
 #define GSD_POWER_SETTINGS_SCHEMA               "org.gnome.settings-daemon.plugins.power"
 #define GSD_XRANDR_SETTINGS_SCHEMA              "org.gnome.settings-daemon.plugins.xrandr"
 
-#define GSD_DBUS_SERVICE                        "org.gnome.SettingsDaemon"
-#define GSD_DBUS_PATH                           "/org/gnome/SettingsDaemon"
+#define GSD_POWER_DBUS_NAME                     GSD_DBUS_NAME ".Power"
 #define GSD_POWER_DBUS_PATH                     GSD_DBUS_PATH "/Power"
-#define GSD_POWER_DBUS_INTERFACE                "org.gnome.SettingsDaemon.Power"
-#define GSD_POWER_DBUS_INTERFACE_SCREEN         "org.gnome.SettingsDaemon.Power.Screen"
-#define GSD_POWER_DBUS_INTERFACE_KEYBOARD       "org.gnome.SettingsDaemon.Power.Keyboard"
+#define GSD_POWER_DBUS_INTERFACE                GSD_DBUS_BASE_INTERFACE ".Power"
+#define GSD_POWER_DBUS_INTERFACE_SCREEN         GSD_POWER_DBUS_INTERFACE ".Screen"
+#define GSD_POWER_DBUS_INTERFACE_KEYBOARD       GSD_POWER_DBUS_INTERFACE ".Keyboard"
 
 #define GS_DBUS_NAME                            "org.gnome.ScreenSaver"
 #define GS_DBUS_PATH                            "/org/gnome/ScreenSaver"
@@ -157,6 +157,7 @@ typedef enum {
 struct GsdPowerManagerPrivate
 {
         GDBusProxy              *session;
+        guint                    name_id;
         gboolean                 lid_is_closed;
         GSettings               *settings;
         GSettings               *settings_screensaver;
@@ -2622,7 +2623,7 @@ backlight_emit_changed (GsdPowerManager *manager)
         if (manager->priv->connection == NULL)
                 return;
         ret = g_dbus_connection_emit_signal (manager->priv->connection,
-                                             GSD_DBUS_SERVICE,
+                                             GSD_DBUS_NAME,
                                              GSD_POWER_DBUS_PATH,
                                              GSD_POWER_DBUS_INTERFACE_SCREEN,
                                              "Changed",
@@ -3289,10 +3290,31 @@ refresh_idle_dim_settings (GsdPowerManager *manager)
 }
 
 static void
+gsd_power_manager_finalize (GObject *object)
+{
+        GsdPowerManager *manager;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GSD_IS_POWER_MANAGER (object));
+
+        manager = GSD_POWER_MANAGER (object);
+
+        g_return_if_fail (manager->priv != NULL);
+
+        if (manager->priv->name_id != 0)
+                g_bus_unown_name (manager->priv->name_id);
+
+        G_OBJECT_CLASS (gsd_power_manager_parent_class)->finalize (object);
+}
+
+static void
 gsd_power_manager_class_init (GsdPowerManagerClass *klass)
 {
+        GObjectClass *object_class = G_OBJECT_CLASS (klass);
         const char* env_action_delay;
 
+        object_class->finalize = gsd_power_manager_finalize;
+
         g_type_class_add_private (klass, sizeof (GsdPowerManagerPrivate));
 
         env_action_delay = g_getenv ("GSD_ACTION_DELAY");
@@ -4506,6 +4528,14 @@ on_bus_gotten (GObject             *source_object,
                                                    NULL,
                                                    NULL);
         }
+
+        manager->priv->name_id = g_bus_own_name_on_connection (connection,
+                                                               GSD_POWER_DBUS_NAME,
+                                                               G_BUS_NAME_OWNER_FLAGS_NONE,
+                                                               NULL,
+                                                               NULL,
+                                                               NULL,
+                                                               NULL);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]