[gnome-settings-daemon] xsettings: Drop gnome-desktop dependency



commit f7bd01db2b445269c9013b256bbdc7d2763340d8
Author: Rui Matos <tiagomatos gmail com>
Date:   Tue Aug 22 18:43:40 2017 +0200

    xsettings: Drop gnome-desktop dependency
    
    Since commit 8a51cd0 we no longer need the GnomeRR API. Listening to
    mutter's MonitorsChanged signal is enough.

 configure.ac                              |    2 +-
 plugins/xsettings/gsd-xsettings-manager.c |   56 +++++++++++++----------------
 2 files changed, 26 insertions(+), 32 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 719208a..a00e50f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -241,7 +241,7 @@ PKG_CHECK_MODULES(SOUND,
 
 PKG_CHECK_MODULES(XSETTINGS,
                  fontconfig
-                 gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION
+                 gtk+-3.0
                  x11)
 
 dnl ---------------------------------------------------------------------------
diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c
index c89184d..ae5cc1a 100644
--- a/plugins/xsettings/gsd-xsettings-manager.c
+++ b/plugins/xsettings/gsd-xsettings-manager.c
@@ -37,12 +37,6 @@
 #include <gdk/gdkx.h>
 #include <gtk/gtk.h>
 
-#define GNOME_DESKTOP_USE_UNSTABLE_API
-
-#include <libgnome-desktop/gnome-rr-config.h>
-#include <libgnome-desktop/gnome-rr.h>
-#include <libgnome-desktop/gnome-pnp-ids.h>
-
 #include "gnome-settings-profile.h"
 #include "gsd-enums.h"
 #include "gsd-xsettings-manager.h"
@@ -282,7 +276,7 @@ struct GnomeXSettingsManagerPrivate
 
         GsdRemoteDisplayManager *remote_display;
 
-        GnomeRRScreen     *rr_screen;
+        guint              monitors_changed_id;
 
         guint              shell_name_watch_id;
         gboolean           have_shell;
@@ -1108,30 +1102,23 @@ enable_animations_changed_cb (GSettings             *settings,
 }
 
 static void
-on_rr_screen_changed (GnomeRRScreen         *screen,
-                      GnomeXSettingsManager *manager)
+monitors_changed (GnomeXSettingsManager *manager)
 {
         update_xft_settings (manager);
         queue_notify (manager);
 }
 
 static void
-on_rr_screen_acquired (GObject      *object,
-                       GAsyncResult *result,
-                       gpointer      data)
+on_monitors_changed (GDBusConnection *connection,
+                     const gchar     *sender_name,
+                     const gchar     *object_path,
+                     const gchar     *interface_name,
+                     const gchar     *signal_name,
+                     GVariant        *parameters,
+                     gpointer         data)
 {
         GnomeXSettingsManager *manager = data;
-        GnomeRRScreen *rr_screen;
-
-        rr_screen = gnome_rr_screen_new_finish (result, NULL);
-        if (!rr_screen)
-                return;
-
-        manager->priv->rr_screen = rr_screen;
-        g_signal_connect (rr_screen, "changed",
-                          G_CALLBACK (on_rr_screen_changed), manager);
-
-        on_rr_screen_changed (rr_screen, manager);
+        monitors_changed (manager);
 }
 
 gboolean
@@ -1157,9 +1144,17 @@ gnome_xsettings_manager_start (GnomeXSettingsManager *manager,
         g_signal_connect (G_OBJECT (manager->priv->remote_display), "notify::force-disable-animations",
                           G_CALLBACK (force_disable_animation_changed), manager);
 
-        gnome_rr_screen_new_async (gdk_screen_get_default (),
-                                   on_rr_screen_acquired,
-                                   manager);
+        manager->priv->monitors_changed_id =
+                g_dbus_connection_signal_subscribe (manager->priv->dbus_connection,
+                                                    "org.gnome.Mutter.DisplayConfig",
+                                                    "org.gnome.Mutter.DisplayConfig",
+                                                    "MonitorsChanged",
+                                                    "/org/gnome/Mutter/DisplayConfig",
+                                                    NULL,
+                                                    G_DBUS_SIGNAL_FLAGS_NONE,
+                                                    on_monitors_changed,
+                                                    manager,
+                                                    NULL);
 
         manager->priv->settings = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                          NULL, (GDestroyNotify) g_object_unref);
@@ -1267,11 +1262,10 @@ gnome_xsettings_manager_stop (GnomeXSettingsManager *manager)
 
         g_clear_object (&manager->priv->remote_display);
 
-        if (manager->priv->rr_screen != NULL) {
-                g_signal_handlers_disconnect_by_func (manager->priv->rr_screen,
-                                                      (gpointer) on_rr_screen_changed,
-                                                      manager);
-                g_clear_object (&manager->priv->rr_screen);
+        if (p->monitors_changed_id) {
+                g_dbus_connection_signal_unsubscribe (p->dbus_connection,
+                                                      p->monitors_changed_id);
+                p->monitors_changed_id = 0;
         }
 
         if (p->shell_name_watch_id > 0) {


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