Sophie

Sophie

distrib > Mageia > 9 > armv7hl > by-pkgid > 76975bdacd27acb75297b765f97f0e52 > files > 6

light-locker-1.9.0-6.mga9.src.rpm

From 695f414cabf32ab3eb75e43fb2b3e0572c41fc99 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Corentin=20No=C3=ABl?= <corentin@elementary.io>
Date: Mon, 1 Apr 2019 08:29:14 +0200
Subject: [PATCH 5/5] GSGrab: use modern GObject syntax

---
 src/gs-grab-x11.c | 129 +++++++++++++++++++++-------------------------
 src/gs-grab.h     |  24 +--------
 2 files changed, 62 insertions(+), 91 deletions(-)

diff --git a/src/gs-grab-x11.c b/src/gs-grab-x11.c
index ed0b5fa..7c3d16c 100644
--- a/src/gs-grab-x11.c
+++ b/src/gs-grab-x11.c
@@ -41,17 +41,11 @@ static void     gs_grab_class_init (GSGrabClass *klass);
 static void     gs_grab_init       (GSGrab      *grab);
 static void     gs_grab_finalize   (GObject        *object);
 
-#define GS_GRAB_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_GRAB, GSGrabPrivate))
-
-G_DEFINE_TYPE (GSGrab, gs_grab, G_TYPE_OBJECT)
-
-static gpointer grab_object = NULL;
-
-struct GSGrabPrivate
+struct _GSGrab
 {
         GDBusConnection *session_bus;
 
-        guint      mouse_hide_cursor : 1;
+        gboolean   mouse_hide_cursor;
         GdkWindow *mouse_grab_window;
         GdkWindow *keyboard_grab_window;
         GdkScreen *mouse_grab_screen;
@@ -60,6 +54,8 @@ struct GSGrabPrivate
         GtkWidget *invisible;
 };
 
+G_DEFINE_TYPE (GSGrab, gs_grab, G_TYPE_OBJECT)
+
 static const char *
 grab_string (int status)
 {
@@ -175,16 +171,16 @@ gs_grab_get_keyboard (GSGrab    *grab,
         g_list_free(list);
 
         if (status == GDK_GRAB_SUCCESS) {
-                if (grab->priv->keyboard_grab_window != NULL) {
-                        g_object_remove_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
-                                                      (gpointer *) &grab->priv->keyboard_grab_window);
+                if (grab->keyboard_grab_window != NULL) {
+                        g_object_remove_weak_pointer (G_OBJECT (grab->keyboard_grab_window),
+                                                      (gpointer *) &grab->keyboard_grab_window);
                 }
-                grab->priv->keyboard_grab_window = window;
+                grab->keyboard_grab_window = window;
 
-                g_object_add_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
-                                           (gpointer *) &grab->priv->keyboard_grab_window);
+                g_object_add_weak_pointer (G_OBJECT (grab->keyboard_grab_window),
+                                           (gpointer *) &grab->keyboard_grab_window);
 
-                grab->priv->keyboard_grab_screen = screen;
+                grab->keyboard_grab_screen = screen;
         } else {
                 gs_debug ("Couldn't grab keyboard!  (%s)", grab_string (status));
         }
@@ -230,17 +226,17 @@ gs_grab_get_mouse (GSGrab    *grab,
         g_list_free(list);
 
         if (status == GDK_GRAB_SUCCESS) {
-                if (grab->priv->mouse_grab_window != NULL) {
-                        g_object_remove_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
-                                                      (gpointer *) &grab->priv->mouse_grab_window);
+                if (grab->mouse_grab_window != NULL) {
+                        g_object_remove_weak_pointer (G_OBJECT (grab->mouse_grab_window),
+                                                      (gpointer *) &grab->mouse_grab_window);
                 }
-                grab->priv->mouse_grab_window = window;
+                grab->mouse_grab_window = window;
 
-                g_object_add_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
-                                           (gpointer *) &grab->priv->mouse_grab_window);
+                g_object_add_weak_pointer (G_OBJECT (grab->mouse_grab_window),
+                                           (gpointer *) &grab->mouse_grab_window);
 
-                grab->priv->mouse_grab_screen = screen;
-                grab->priv->mouse_hide_cursor = hide_cursor;
+                grab->mouse_grab_screen = screen;
+                grab->mouse_hide_cursor = hide_cursor;
         }
 
         g_object_unref (cursor);
@@ -251,12 +247,12 @@ gs_grab_get_mouse (GSGrab    *grab,
 void
 gs_grab_keyboard_reset (GSGrab *grab)
 {
-        if (grab->priv->keyboard_grab_window != NULL) {
-                g_object_remove_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
-                                              (gpointer *) &grab->priv->keyboard_grab_window);
+        if (grab->keyboard_grab_window != NULL) {
+                g_object_remove_weak_pointer (G_OBJECT (grab->keyboard_grab_window),
+                                              (gpointer *) &grab->keyboard_grab_window);
         }
-        grab->priv->keyboard_grab_window = NULL;
-        grab->priv->keyboard_grab_screen = NULL;
+        grab->keyboard_grab_window = NULL;
+        grab->keyboard_grab_screen = NULL;
 }
 
 static gboolean
@@ -287,13 +283,13 @@ gs_grab_release_keyboard (GSGrab *grab)
 void
 gs_grab_mouse_reset (GSGrab *grab)
 {
-        if (grab->priv->mouse_grab_window != NULL) {
-                g_object_remove_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
-                                              (gpointer *) &grab->priv->mouse_grab_window);
+        if (grab->mouse_grab_window != NULL) {
+                g_object_remove_weak_pointer (G_OBJECT (grab->mouse_grab_window),
+                                              (gpointer *) &grab->mouse_grab_window);
         }
 
-        grab->priv->mouse_grab_window = NULL;
-        grab->priv->mouse_grab_screen = NULL;
+        grab->mouse_grab_window = NULL;
+        grab->mouse_grab_screen = NULL;
 }
 
 gboolean
@@ -350,9 +346,9 @@ gs_grab_move_mouse (GSGrab    *grab,
         }
         g_list_free(list);
 
-        if (grab->priv->mouse_grab_window == window) {
+        if (grab->mouse_grab_window == window) {
                 gs_debug ("Window %X is already grabbed, skipping",
-                          (guint32) GDK_WINDOW_XID (grab->priv->mouse_grab_window));
+                          (guint32) GDK_WINDOW_XID (grab->mouse_grab_window));
                 return TRUE;
         }
 
@@ -361,9 +357,9 @@ gs_grab_move_mouse (GSGrab    *grab,
         /* FIXME: GTK doesn't like having the pointer grabbed */
         return TRUE;
 #else
-        if (grab->priv->mouse_grab_window) {
+        if (grab->mouse_grab_window) {
                 gs_debug ("Moving pointer grab from %X to %X",
-                          (guint32) GDK_WINDOW_XID (grab->priv->mouse_grab_window),
+                          (guint32) GDK_WINDOW_XID (grab->mouse_grab_window),
                           (guint32) GDK_WINDOW_XID (window));
         } else {
                 gs_debug ("Getting pointer grab on %X",
@@ -374,9 +370,9 @@ gs_grab_move_mouse (GSGrab    *grab,
         gs_debug ("*** doing X server grab");
         gdk_x11_grab_server ();
 
-        old_window = grab->priv->mouse_grab_window;
-        old_screen = grab->priv->mouse_grab_screen;
-        old_hide_cursor = grab->priv->mouse_hide_cursor;
+        old_window = grab->mouse_grab_window;
+        old_screen = grab->mouse_grab_screen;
+        old_hide_cursor = grab->mouse_hide_cursor;
 
         if (old_window) {
                 gs_grab_release_mouse (grab);
@@ -410,15 +406,15 @@ gs_grab_move_keyboard (GSGrab    *grab,
         GdkWindow *old_window;
         GdkScreen *old_screen;
 
-        if (grab->priv->keyboard_grab_window == window) {
+        if (grab->keyboard_grab_window == window) {
                 gs_debug ("Window %X is already grabbed, skipping",
-                          (guint32) GDK_WINDOW_XID (grab->priv->keyboard_grab_window));
+                          (guint32) GDK_WINDOW_XID (grab->keyboard_grab_window));
                 return TRUE;
         }
 
-        if (grab->priv->keyboard_grab_window != NULL) {
+        if (grab->keyboard_grab_window != NULL) {
                 gs_debug ("Moving keyboard grab from %X to %X",
-                          (guint32) GDK_WINDOW_XID (grab->priv->keyboard_grab_window),
+                          (guint32) GDK_WINDOW_XID (grab->keyboard_grab_window),
                           (guint32) GDK_WINDOW_XID (window));
         } else {
                 gs_debug ("Getting keyboard grab on %X",
@@ -429,8 +425,8 @@ gs_grab_move_keyboard (GSGrab    *grab,
         gs_debug ("*** doing X server grab");
         gdk_x11_grab_server ();
 
-        old_window = grab->priv->keyboard_grab_window;
-        old_screen = grab->priv->keyboard_grab_screen;
+        old_window = grab->keyboard_grab_window;
+        old_screen = grab->keyboard_grab_screen;
 
         if (old_window) {
                 gs_grab_release_keyboard (grab);
@@ -496,7 +492,7 @@ request_shell_exit_overview (GSGrab *grab)
         GDBusMessage *message;
 
         /* Shouldn't happen, but... */
-        if (!grab->priv->session_bus)
+        if (!grab->session_bus)
                 return;
 
         message = g_dbus_message_new_method_call ("org.gnome.Shell",
@@ -510,7 +506,7 @@ request_shell_exit_overview (GSGrab *grab)
                                                 g_variant_new ("b",
                                                                FALSE)));
 
-        g_dbus_connection_send_message (grab->priv->session_bus,
+        g_dbus_connection_send_message (grab->session_bus,
                                         message,
                                         G_DBUS_SEND_MESSAGE_FLAGS_NONE,
                                         NULL,
@@ -530,6 +526,8 @@ gs_grab_grab_window (GSGrab    *grab,
         int      retries = 4;
         gboolean focus_fuckus = FALSE;
 
+        g_return_val_if_fail (GS_IS_GRAB (grab), FALSE);
+
         /* First, have stuff we control in GNOME un-grab */
         request_shell_exit_overview (grab);
 
@@ -612,6 +610,8 @@ gs_grab_grab_root (GSGrab  *grab,
         GdkScreen  *screen;
         gboolean    res;
 
+        g_return_val_if_fail (GS_IS_GRAB (grab), FALSE);
+
         gs_debug ("Grabbing the root window");
 
         display = gdk_display_get_default ();
@@ -634,10 +634,12 @@ gs_grab_grab_offscreen (GSGrab *grab,
         GdkScreen *screen;
         gboolean   res;
 
+        g_return_val_if_fail (GS_IS_GRAB (grab), FALSE);
+
         gs_debug ("Grabbing an offscreen window");
 
-        screen = gtk_invisible_get_screen (GTK_INVISIBLE (grab->priv->invisible));
-        res = gs_grab_grab_window (grab, gtk_widget_get_window (grab->priv->invisible), screen, hide_cursor);
+        screen = gtk_invisible_get_screen (GTK_INVISIBLE (grab->invisible));
+        res = gs_grab_grab_window (grab, gtk_widget_get_window (grab->invisible), screen, hide_cursor);
 
         return res;
 }
@@ -672,37 +674,25 @@ gs_grab_class_init (GSGrabClass *klass)
         GObjectClass   *object_class = G_OBJECT_CLASS (klass);
 
         object_class->finalize = gs_grab_finalize;
-
-        g_type_class_add_private (klass, sizeof (GSGrabPrivate));
 }
 
 static void
 gs_grab_init (GSGrab *grab)
 {
-        grab->priv = GS_GRAB_GET_PRIVATE (grab);
+        grab->session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
 
-        grab->priv->session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
-
-        grab->priv->mouse_hide_cursor = FALSE;
-        grab->priv->invisible = gtk_invisible_new ();
-        gtk_widget_show (grab->priv->invisible);
+        grab->mouse_hide_cursor = FALSE;
+        grab->invisible = gtk_invisible_new ();
+        gtk_widget_show (grab->invisible);
 }
 
 static void
 gs_grab_finalize (GObject *object)
 {
-        GSGrab *grab;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GS_IS_GRAB (object));
-
-        grab = GS_GRAB (object);
-
-        g_object_unref (grab->priv->session_bus);
-
-        g_return_if_fail (grab->priv != NULL);
+        GSGrab *grab = GS_GRAB (object);
 
-        gtk_widget_destroy (grab->priv->invisible);
+        g_clear_object (&grab->session_bus);
+        gtk_widget_destroy (grab->invisible);
 
         G_OBJECT_CLASS (gs_grab_parent_class)->finalize (object);
 }
@@ -710,6 +700,7 @@ gs_grab_finalize (GObject *object)
 GSGrab *
 gs_grab_new (void)
 {
+        static gpointer grab_object = NULL;
         if (grab_object) {
                 g_object_ref (grab_object);
         } else {
diff --git a/src/gs-grab.h b/src/gs-grab.h
index 3ab4b8a..709078f 100644
--- a/src/gs-grab.h
+++ b/src/gs-grab.h
@@ -28,28 +28,8 @@
 
 G_BEGIN_DECLS
 
-#define GS_TYPE_GRAB         (gs_grab_get_type ())
-#define GS_GRAB(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_GRAB, GSGrab))
-#define GS_GRAB_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_GRAB, GSGrabClass))
-#define GS_IS_GRAB(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_GRAB))
-#define GS_IS_GRAB_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_GRAB))
-#define GS_GRAB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_GRAB, GSGrabClass))
-
-typedef struct GSGrabPrivate GSGrabPrivate;
-
-typedef struct
-{
-        GObject        parent;
-        GSGrabPrivate *priv;
-} GSGrab;
-
-typedef struct
-{
-        GObjectClass   parent_class;
-
-} GSGrabClass;
-
-GType     gs_grab_get_type         (void);
+#define GS_TYPE_GRAB gs_grab_get_type ()
+G_DECLARE_FINAL_TYPE (GSGrab, gs_grab, GS, GRAB, GObject)
 
 GSGrab  * gs_grab_new              (void);
 
-- 
2.30.0