[gnome-settings-daemon] wacom: Remove deprecated call to gdk_display_get_n_screens



commit 890f1e3662e1b5687baf7063aeac9eafad8158f3
Author: Joaquim Rocha <jrocha redhat com>
Date:   Fri Apr 26 11:35:23 2013 +0200

    wacom: Remove deprecated call to gdk_display_get_n_screens
    
    Also skips using the display to get the default screen and
    modifies the grab_button function from gsd-keygrab so it uses
    a GdkScreen instead of a list of those.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=698929

 plugins/common/gsd-keygrab.c      |   26 ++--------
 plugins/common/gsd-keygrab.h      |    6 +-
 plugins/wacom/gsd-wacom-manager.c |   98 +++++++++++++++----------------------
 3 files changed, 49 insertions(+), 81 deletions(-)
---
diff --git a/plugins/common/gsd-keygrab.c b/plugins/common/gsd-keygrab.c
index a56b131..262d5a7 100644
--- a/plugins/common/gsd-keygrab.c
+++ b/plugins/common/gsd-keygrab.c
@@ -361,13 +361,15 @@ match_xi2_key (Key *key, XIDeviceEvent *event)
                 && key_uses_keycode (key, keycode));
 }
 
-static void
-grab_button_real (int        deviceid,
-                 gboolean   grab,
-                 GdkWindow *root)
+void
+grab_button (int        deviceid,
+             gboolean   grab,
+             GdkScreen *screen)
 {
+       GdkWindow *root;
        XIGrabModifiers mods;
 
+       root = gdk_screen_get_root_window (screen);
        mods.modifiers = XIAnyModifier;
 
        if (grab) {
@@ -401,19 +403,3 @@ grab_button_real (int        deviceid,
                                1, &mods);
        }
 }
-
-void
-grab_button (int      deviceid,
-            gboolean grab,
-            GSList  *screens)
-{
-        GSList *l;
-
-        for (l = screens; l; l = l->next) {
-                GdkScreen *screen = l->data;
-
-               grab_button_real (deviceid,
-                                 grab,
-                                 gdk_screen_get_root_window (screen));
-        }
-}
diff --git a/plugins/common/gsd-keygrab.h b/plugins/common/gsd-keygrab.h
index 3420fa2..1104196 100644
--- a/plugins/common/gsd-keygrab.h
+++ b/plugins/common/gsd-keygrab.h
@@ -48,9 +48,9 @@ gboolean        match_xi2_key   (Key           *key,
 gboolean        key_uses_keycode (const Key *key,
                                   guint keycode);
 
-void            grab_button      (int      deviceid,
-                                  gboolean grab,
-                                  GSList  *screens);
+void            grab_button      (int        deviceid,
+                                  gboolean   grab,
+                                  GdkScreen *screen);
 
 G_END_DECLS
 
diff --git a/plugins/wacom/gsd-wacom-manager.c b/plugins/wacom/gsd-wacom-manager.c
index 5b01047..86ca454 100644
--- a/plugins/wacom/gsd-wacom-manager.c
+++ b/plugins/wacom/gsd-wacom-manager.c
@@ -79,10 +79,10 @@ struct GsdWacomManagerPrivate
         guint device_added_id;
         guint device_removed_id;
         GHashTable *devices; /* key = GdkDevice, value = GsdWacomDevice */
-        GList *rr_screens;
+        GnomeRRScreen *rr_screen;
 
         /* button capture */
-        GSList *screens;
+        GdkScreen *screen;
         int      opcode;
 
         /* Help OSD window */
@@ -745,7 +745,7 @@ set_wacom_settings (GsdWacomManager *manager,
 
                id = get_device_id (device);
                reset_pad_buttons (device);
-               grab_button (id, TRUE, manager->priv->screens);
+               grab_button (id, TRUE, manager->priv->screen);
                return;
        }
 
@@ -1339,7 +1339,6 @@ static gboolean
 gsd_wacom_manager_idle_cb (GsdWacomManager *manager)
 {
        GList *devices, *l;
-       GSList *ls;
 
         gnome_settings_profile_start (NULL);
 
@@ -1353,11 +1352,9 @@ gsd_wacom_manager_idle_cb (GsdWacomManager *manager)
         g_list_free (devices);
 
         /* Start filtering the button events */
-        for (ls = manager->priv->screens; ls != NULL; ls = ls->next) {
-                gdk_window_add_filter (gdk_screen_get_root_window (ls->data),
-                                       (GdkFilterFunc) filter_button_events,
-                                       manager);
-        }
+        gdk_window_add_filter (gdk_screen_get_root_window (manager->priv->screen),
+                               (GdkFilterFunc) filter_button_events,
+                               manager);
 
         gnome_settings_profile_end (NULL);
 
@@ -1408,39 +1405,33 @@ on_screen_changed_cb (GnomeRRScreen *rr_screen,
 }
 
 static void
-init_screens (GsdWacomManager *manager)
+init_screen (GsdWacomManager *manager)
 {
-        GdkDisplay *display;
-        int i;
-
-        display = gdk_display_get_default ();
-        for (i = 0; i < gdk_display_get_n_screens (display); i++) {
-                GError *error = NULL;
-                GdkScreen *screen;
-                GnomeRRScreen *rr_screen;
-
-                screen = gdk_display_get_screen (display, i);
-                if (screen == NULL) {
-                        continue;
-                }
-                manager->priv->screens = g_slist_append (manager->priv->screens, screen);
-
-               /*
-                * We also keep a list of GnomeRRScreen to monitor changes such as rotation
-                * which are not reported by Gdk's "monitors-changed" callback
-                */
-               rr_screen = gnome_rr_screen_new (screen, &error);
-               if (rr_screen == NULL) {
-                       g_warning ("Failed to create GnomeRRScreen: %s", error->message);
-                       g_error_free (error);
-                       continue;
-               }
-               manager->priv->rr_screens = g_list_prepend (manager->priv->rr_screens, rr_screen);
-               g_signal_connect (rr_screen,
-                                 "changed",
-                                 G_CALLBACK (on_screen_changed_cb),
-                                 manager);
+        GError *error = NULL;
+        GdkScreen *screen;
+        GnomeRRScreen *rr_screen;
+
+        screen = gdk_screen_get_default ();
+        if (screen == NULL) {
+                return;
+        }
+        manager->priv->screen = screen;
+
+        /*
+         * We keep GnomeRRScreen to monitor changes such as rotation
+         * which are not reported by Gdk's "monitors-changed" callback
+         */
+        rr_screen = gnome_rr_screen_new (screen, &error);
+        if (rr_screen == NULL) {
+                g_warning ("Failed to create GnomeRRScreen: %s", error->message);
+                g_error_free (error);
+                return;
         }
+        manager->priv->rr_screen = rr_screen;
+        g_signal_connect (rr_screen,
+                          "changed",
+                          G_CALLBACK (on_screen_changed_cb),
+                          manager);
 }
 
 gboolean
@@ -1459,7 +1450,7 @@ gsd_wacom_manager_start (GsdWacomManager *manager,
                 return TRUE;
         }
 
-        init_screens (manager);
+        init_screen (manager);
 
         manager->priv->start_idle_id = g_idle_add ((GSourceFunc) gsd_wacom_manager_idle_cb, manager);
 
@@ -1472,7 +1463,6 @@ void
 gsd_wacom_manager_stop (GsdWacomManager *manager)
 {
         GsdWacomManagerPrivate *p = manager->priv;
-        GSList *ls;
         GList *l;
 
         g_debug ("Stopping wacom manager");
@@ -1492,7 +1482,7 @@ gsd_wacom_manager_stop (GsdWacomManager *manager)
                                 int id;
 
                                 id = get_device_id (l->data);
-                                grab_button (id, FALSE, manager->priv->screens);
+                                grab_button (id, FALSE, manager->priv->screen);
                         }
                 }
                 g_list_free (devices);
@@ -1500,14 +1490,11 @@ gsd_wacom_manager_stop (GsdWacomManager *manager)
                 p->device_manager = NULL;
         }
 
-        for (ls = p->screens; ls != NULL; ls = ls->next) {
-                gdk_window_remove_filter (gdk_screen_get_root_window (ls->data),
-                                          (GdkFilterFunc) filter_button_events,
-                                          manager);
-        }
+        gdk_window_remove_filter (gdk_screen_get_root_window (p->screen),
+                                  (GdkFilterFunc) filter_button_events,
+                                  manager);
 
-       for (l = p->rr_screens; l != NULL; l = l->next)
-               g_signal_handlers_disconnect_by_func (l->data, on_screen_changed_cb, manager);
+        g_signal_handlers_disconnect_by_func (p->rr_screen, on_screen_changed_cb, manager);
 
         g_clear_pointer (&p->osd_window, gtk_widget_destroy);
 }
@@ -1529,14 +1516,9 @@ gsd_wacom_manager_finalize (GObject *object)
                 wacom_manager->priv->devices = NULL;
         }
 
-        if (wacom_manager->priv->screens != NULL) {
-                g_slist_free (wacom_manager->priv->screens);
-                wacom_manager->priv->screens = NULL;
-        }
-
-       if (wacom_manager->priv->rr_screens != NULL) {
-               g_list_free_full (wacom_manager->priv->rr_screens, g_object_unref);
-               wacom_manager->priv->rr_screens = NULL;
+       if (wacom_manager->priv->rr_screen != NULL) {
+               g_clear_object (&wacom_manager->priv->rr_screen);
+               wacom_manager->priv->rr_screen = NULL;
        }
 
         if (wacom_manager->priv->start_idle_id != 0)


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