Sophie

Sophie

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

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

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

---
 src/gs-manager.c | 334 +++++++++++++++++++++++------------------------
 src/gs-manager.h |  28 +---
 2 files changed, 169 insertions(+), 193 deletions(-)

diff --git a/src/gs-manager.c b/src/gs-manager.c
index fdc7af3..61afa56 100644
--- a/src/gs-manager.c
+++ b/src/gs-manager.c
@@ -32,30 +32,26 @@
 #include "gs-content.h"
 #include "gs-debug.h"
 
-static void gs_manager_class_init (GSManagerClass *klass);
-static void gs_manager_init       (GSManager      *manager);
-static void gs_manager_finalize   (GObject        *object);
-
-#define GS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_MANAGER, GSManagerPrivate))
-
-struct GSManagerPrivate
+struct _GSManager
 {
-        GSList      *windows;
+  GObject parent_instance;
 
-        /* Configuration */
-        guint        lock_after;
+  GSList      *windows;
 
-        /* State */
-        guint        active : 1;
-        guint        visible : 1;
-        guint        blank : 1;
-        guint        closed : 1;
-        guint        show_content : 1;
+  /* Configuration */
+  guint        lock_after;
 
-        guint        greeter_timeout_id;
-        guint        lock_timeout_id;
+  /* State */
+  gboolean     active;
+  gboolean     visible;
+  gboolean     blank;
+  gboolean     closed;
+  gboolean     show_content;
 
-        GSGrab      *grab;
+  guint        greeter_timeout_id;
+  guint        lock_timeout_id;
+
+  GSGrab      *grab;
 };
 
 enum {
@@ -66,14 +62,14 @@ enum {
 };
 
 enum {
-        PROP_0,
-        PROP_STATUS_MESSAGE,
-        PROP_ACTIVE,
+        PROP_ACTIVE = 1,
+        N_PROPERTIES
 };
 
 #define FADE_TIMEOUT 250
 
-static guint         signals [LAST_SIGNAL] = { 0, };
+static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
+static guint signals [LAST_SIGNAL] = { 0, };
 
 G_DEFINE_TYPE (GSManager, gs_manager, G_TYPE_OBJECT)
 
@@ -102,7 +98,7 @@ gs_manager_get_property (GObject            *object,
 
         switch (prop_id) {
         case PROP_ACTIVE:
-                g_value_set_boolean (value, self->priv->active);
+                g_value_set_boolean (value, self->active);
                 break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -110,70 +106,15 @@ gs_manager_get_property (GObject            *object,
         }
 }
 
-static void
-gs_manager_class_init (GSManagerClass *klass)
-{
-        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
-
-        object_class->finalize     = gs_manager_finalize;
-        object_class->get_property = gs_manager_get_property;
-        object_class->set_property = gs_manager_set_property;
-
-        signals [ACTIVATED] =
-                g_signal_new ("activated",
-                              G_TYPE_FROM_CLASS (object_class),
-                              G_SIGNAL_RUN_LAST,
-                              G_STRUCT_OFFSET (GSManagerClass, activated),
-                              NULL,
-                              NULL,
-                              g_cclosure_marshal_VOID__VOID,
-                              G_TYPE_NONE,
-                              0);
-
-        signals [SWITCH_GREETER] =
-                g_signal_new ("switch-greeter",
-                              G_TYPE_FROM_CLASS (object_class),
-                              G_SIGNAL_RUN_LAST,
-                              G_STRUCT_OFFSET (GSManagerClass, switch_greeter),
-                              NULL,
-                              NULL,
-                              g_cclosure_marshal_VOID__VOID,
-                              G_TYPE_NONE,
-                              0);
-
-        signals [LOCK] =
-                g_signal_new ("lock",
-                              G_TYPE_FROM_CLASS (object_class),
-                              G_SIGNAL_RUN_LAST,
-                              G_STRUCT_OFFSET (GSManagerClass, lock),
-                              NULL,
-                              NULL,
-                              g_cclosure_marshal_VOID__VOID,
-                              G_TYPE_NONE,
-                              0);
-
-        g_object_class_install_property (object_class,
-                                         PROP_ACTIVE,
-                                         g_param_spec_boolean ("active",
-                                                               NULL,
-                                                               NULL,
-                                                               FALSE,
-                                                               G_PARAM_READABLE));
-
-        g_type_class_add_private (klass, sizeof (GSManagerPrivate));
-}
-
 static void
 gs_manager_init (GSManager *manager)
 {
-        manager->priv = GS_MANAGER_GET_PRIVATE (manager);
-
-        manager->priv->grab = gs_grab_new ();
+        manager->grab = gs_grab_new ();
 
         /* Assume we are the visible session on start. */
-        manager->priv->visible = TRUE;
+        manager->visible = TRUE;
 
-        manager->priv->lock_after = 5;
+        manager->lock_after = 5;
 }
 
 
@@ -198,7 +139,7 @@ manager_maybe_grab_window (GSManager *manager,
         if (gs_window_get_screen (window) == screen
             && gs_window_get_monitor (window) == monitor) {
                 gs_debug ("Moving grab to %p", window);
-                gs_grab_move_to_window (manager->priv->grab,
+                gs_grab_move_to_window (manager->grab,
                                         gs_window_get_gdk_window (window),
                                         gs_window_get_screen (window),
                                         TRUE);
@@ -215,9 +156,9 @@ window_grab_broken_cb (GSWindow           *window,
 {
         gs_debug ("GRAB BROKEN!");
         if (event->keyboard) {
-                gs_grab_keyboard_reset (manager->priv->grab);
+                gs_grab_keyboard_reset (manager->grab);
         } else {
-                gs_grab_mouse_reset (manager->priv->grab);
+                gs_grab_mouse_reset (manager->grab);
         }
 }
 
@@ -244,7 +185,7 @@ content_draw_cb (GtkWidget *widget,
         cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 1.0);
         cairo_paint (cr);
 
-        if (manager->priv->show_content)
+        if (manager->show_content)
                 content_draw (widget, cr);
 }
 
@@ -302,9 +243,9 @@ gs_manager_create_window_for_monitor (GSManager *manager,
 
         connect_window_signals (manager, window);
 
-        manager->priv->windows = g_slist_append (manager->priv->windows, window);
+        manager->windows = g_slist_append (manager->windows, window);
 
-        if (manager->priv->active) {
+        if (manager->active) {
                 gtk_widget_show (GTK_WIDGET (window));
         }
 }
@@ -319,7 +260,7 @@ on_screen_monitors_changed (GdkScreen *screen,
         int     i;
 
         n_monitors = gdk_screen_get_n_monitors (screen);
-        n_windows = g_slist_length (manager->priv->windows);
+        n_windows = g_slist_length (manager->windows);
 
         gs_debug ("Monitors changed for screen %d: num=%d",
                   gdk_screen_get_number (screen),
@@ -336,7 +277,7 @@ on_screen_monitors_changed (GdkScreen *screen,
                 gdk_x11_grab_server ();
 
                 /* remove the extra windows */
-                l = manager->priv->windows;
+                l = manager->windows;
                 while (l != NULL) {
                         GdkScreen *this_screen;
                         int        this_monitor;
@@ -346,7 +287,7 @@ on_screen_monitors_changed (GdkScreen *screen,
                         this_monitor = gs_window_get_monitor (GS_WINDOW (l->data));
                         if (this_screen == screen && this_monitor >= n_monitors) {
                                 gs_window_destroy (GS_WINDOW (l->data));
-                                manager->priv->windows = g_slist_delete_link (manager->priv->windows, l);
+                                manager->windows = g_slist_delete_link (manager->windows, l);
                         }
                         l = next;
                 }
@@ -355,14 +296,14 @@ on_screen_monitors_changed (GdkScreen *screen,
                 gdk_x11_ungrab_server ();
         }
 
-	for (l = manager->priv->windows; l != NULL; l = l->next) {
-		GdkScreen *this_screen;
+        for (l = manager->windows; l != NULL; l = l->next) {
+              GdkScreen *this_screen;
 
-		this_screen = gs_window_get_screen (GS_WINDOW (l->data));
-		if (this_screen == screen) {
-			gtk_widget_queue_resize (GTK_WIDGET (l->data));
-		}
-	}
+              this_screen = gs_window_get_screen (GS_WINDOW (l->data));
+              if (this_screen == screen) {
+                    gtk_widget_queue_resize (GTK_WIDGET (l->data));
+              }
+        }
 }
 
 static void
@@ -373,10 +314,9 @@ gs_manager_destroy_windows (GSManager *manager)
         int          n_screens;
         int          i;
 
-        g_return_if_fail (manager != NULL);
         g_return_if_fail (GS_IS_MANAGER (manager));
 
-        if (manager->priv->windows == NULL) {
+        if (manager->windows == NULL) {
                 return;
         }
 
@@ -390,17 +330,17 @@ gs_manager_destroy_windows (GSManager *manager)
                                                       manager);
         }
 
-        for (l = manager->priv->windows; l; l = l->next) {
+        for (l = manager->windows; l; l = l->next) {
                 gs_window_destroy (l->data);
         }
-        g_slist_free (manager->priv->windows);
-        manager->priv->windows = NULL;
+        g_slist_free (manager->windows);
+        manager->windows = NULL;
 }
 
 static gboolean
 switch_greeter_timeout (GSManager *manager)
 {
-        manager->priv->greeter_timeout_id = 0;
+        manager->greeter_timeout_id = 0;
 
         gs_debug ("Switch to greeter timeout");
 
@@ -412,33 +352,33 @@ switch_greeter_timeout (GSManager *manager)
 static void
 gs_manager_timed_switch (GSManager *manager)
 {
-        if (manager->priv->greeter_timeout_id != 0) {
+        if (manager->greeter_timeout_id != 0) {
                 gs_debug ("Trying to start an active switch to greeter timer");
                 return;
         }
 
         gs_debug ("Start switch to greeter timer");
 
-        manager->priv->greeter_timeout_id = g_timeout_add_seconds (10,
-                                                                   (GSourceFunc)switch_greeter_timeout,
-                                                                   manager);
+        manager->greeter_timeout_id = g_timeout_add_seconds (10,
+                                                             (GSourceFunc)switch_greeter_timeout,
+                                                             manager);
 }
 
 static void
 gs_manager_stop_switch (GSManager *manager)
 {
-        if (manager->priv->greeter_timeout_id != 0) {
+        if (manager->greeter_timeout_id != 0) {
                 gs_debug ("Stop switch to greeter timer");
 
-                g_source_remove (manager->priv->greeter_timeout_id);
-                manager->priv->greeter_timeout_id = 0;
+                g_source_remove (manager->greeter_timeout_id);
+                manager->greeter_timeout_id = 0;
         }
 }
 
 static gboolean
 lock_timeout (GSManager *manager)
 {
-        manager->priv->lock_timeout_id = 0;
+        manager->lock_timeout_id = 0;
 
         gs_debug ("Lock timeout");
 
@@ -450,58 +390,57 @@ lock_timeout (GSManager *manager)
 static void
 gs_manager_timed_lock (GSManager *manager)
 {
-        if (manager->priv->lock_after == 0) {
+        if (manager->lock_after == 0) {
                 gs_debug ("Lock after disabled");
                 return;
         }
 
-        if (manager->priv->lock_timeout_id != 0) {
+        if (manager->lock_timeout_id != 0) {
                 gs_debug ("Trying to start an active lock timer");
                 return;
         }
 
         gs_debug ("Start lock timer");
 
-        manager->priv->lock_timeout_id = g_timeout_add_seconds (manager->priv->lock_after,
-                                                                (GSourceFunc)lock_timeout,
-                                                                manager);
+        manager->lock_timeout_id = g_timeout_add_seconds (manager->lock_after,
+                                                          (GSourceFunc)lock_timeout,
+                                                          manager);
 }
 
 static void
 gs_manager_stop_lock (GSManager *manager)
 {
-        if (manager->priv->lock_timeout_id != 0) {
+        if (manager->lock_timeout_id != 0) {
                 gs_debug ("Stop lock timer");
 
-                g_source_remove (manager->priv->lock_timeout_id);
-                manager->priv->lock_timeout_id = 0;
+                g_source_remove (manager->lock_timeout_id);
+                manager->lock_timeout_id = 0;
         }
 }
 
 static void
-gs_manager_finalize (GObject *object)
+gs_manager_dispose (GObject *object)
 {
         GSManager *manager;
 
-        g_return_if_fail (object != NULL);
         g_return_if_fail (GS_IS_MANAGER (object));
 
         manager = GS_MANAGER (object);
 
-        g_return_if_fail (manager->priv != NULL);
+        g_return_if_fail (manager != NULL);
 
-        gs_grab_release (manager->priv->grab);
+        gs_grab_release (manager->grab);
 
         gs_manager_destroy_windows (manager);
 
-        manager->priv->active = FALSE;
+        manager->active = FALSE;
 
         gs_manager_stop_switch (manager);
         gs_manager_stop_lock (manager);
 
-        g_object_unref (manager->priv->grab);
+        g_clear_object (&manager->grab);
 
-        G_OBJECT_CLASS (gs_manager_parent_class)->finalize (object);
+        G_OBJECT_CLASS (gs_manager_parent_class)->dispose (object);
 }
 
 static void
@@ -511,7 +450,6 @@ gs_manager_create_windows_for_screen (GSManager *manager,
         int       n_monitors;
         int       i;
 
-        g_return_if_fail (manager != NULL);
         g_return_if_fail (GS_IS_MANAGER (manager));
         g_return_if_fail (GDK_IS_SCREEN (screen));
 
@@ -540,7 +478,7 @@ gs_manager_create_windows (GSManager *manager)
         g_return_if_fail (manager != NULL);
         g_return_if_fail (GS_IS_MANAGER (manager));
 
-        g_assert (manager->priv->windows == NULL);
+        g_assert (manager->windows == NULL);
 
         display = gdk_display_get_default ();
         n_screens = gdk_display_get_n_screens (display);
@@ -555,16 +493,6 @@ gs_manager_create_windows (GSManager *manager)
         }
 }
 
-GSManager *
-gs_manager_new (void)
-{
-        GObject *manager;
-
-        manager = g_object_new (GS_TYPE_MANAGER, NULL);
-
-        return GS_MANAGER (manager);
-}
-
 static void
 show_windows (GSList *windows)
 {
@@ -583,25 +511,25 @@ gs_manager_activate (GSManager *manager)
         g_return_val_if_fail (manager != NULL, FALSE);
         g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
 
-        if (manager->priv->active) {
+        if (manager->active) {
                 gs_debug ("Trying to activate manager when already active");
                 return FALSE;
         }
 
-        res = gs_grab_grab_root (manager->priv->grab, FALSE);
+        res = gs_grab_grab_root (manager->grab, FALSE);
         if (! res) {
                 return FALSE;
         }
 
-        if (manager->priv->windows == NULL) {
+        if (manager->windows == NULL) {
                 gs_manager_create_windows (GS_MANAGER (manager));
         }
 
-        manager->priv->active = TRUE;
+        manager->active = TRUE;
 
-        show_windows (manager->priv->windows);
+        show_windows (manager->windows);
 
-        if (manager->priv->visible && !manager->priv->blank && !manager->priv->closed) {
+        if (manager->visible && !manager->blank && !manager->closed) {
                 gs_manager_timed_switch (manager);
         }
 
@@ -616,34 +544,100 @@ gs_manager_deactivate (GSManager *manager)
         g_return_val_if_fail (manager != NULL, FALSE);
         g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
 
-        if (! manager->priv->active) {
+        if (! manager->active) {
                 gs_debug ("Trying to deactivate a screensaver that is not active");
                 return FALSE;
         }
 
-        gs_grab_release (manager->priv->grab);
+        gs_grab_release (manager->grab);
 
         gs_manager_destroy_windows (manager);
 
         gs_manager_stop_switch (manager);
 
-        if (manager->priv->blank) {
+        if (manager->blank) {
                 gs_manager_timed_lock (manager);
         }
 
         /* reset state */
-        manager->priv->active = FALSE;
-        manager->priv->show_content = FALSE;
+        manager->active = FALSE;
+        manager->show_content = FALSE;
 
         return TRUE;
 }
 
+static void
+gs_manager_class_init (GSManagerClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->dispose      = gs_manager_dispose;
+        object_class->get_property = gs_manager_get_property;
+        object_class->set_property = gs_manager_set_property;
+
+        signals [ACTIVATED] =
+                g_signal_new ("activated",
+                              G_TYPE_FROM_CLASS (object_class),
+                              G_SIGNAL_RUN_LAST,
+                              0,
+                              NULL,
+                              NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE,
+                              0);
+
+        signals [SWITCH_GREETER] =
+                g_signal_new ("switch-greeter",
+                              G_TYPE_FROM_CLASS (object_class),
+                              G_SIGNAL_RUN_LAST,
+                              0,
+                              NULL,
+                              NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE,
+                              0);
+
+        signals [LOCK] =
+                g_signal_new ("lock",
+                              G_TYPE_FROM_CLASS (object_class),
+                              G_SIGNAL_RUN_LAST,
+                              0,
+                              NULL,
+                              NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE,
+                              0);
+
+        obj_properties[PROP_ACTIVE] =
+                g_param_spec_boolean ("active",
+                                      NULL,
+                                      NULL,
+                                      FALSE,
+                                      G_PARAM_READABLE);
+
+        g_object_class_install_properties (object_class,
+                                           N_PROPERTIES,
+                                           obj_properties);
+}
+
+GSManager *
+gs_manager_new (void)
+{
+        GObject *manager;
+
+        manager = g_object_new (GS_TYPE_MANAGER, NULL);
+
+        return GS_MANAGER (manager);
+}
+
 gboolean
 gs_manager_set_active (GSManager *manager,
                        gboolean   active)
 {
         gboolean res;
 
+        g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
         if (active) {
                 res = gs_manager_activate (manager);
         } else {
@@ -656,19 +650,20 @@ gs_manager_set_active (GSManager *manager,
 gboolean
 gs_manager_get_active (GSManager *manager)
 {
-        g_return_val_if_fail (manager != NULL, FALSE);
         g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
 
-        return manager->priv->active;
+        return manager->active;
 }
 
 void
 gs_manager_set_session_visible (GSManager *manager,
                                 gboolean   visible)
 {
-        manager->priv->visible = visible;
+        g_return_if_fail (GS_IS_MANAGER (manager));
+
+        manager->visible = visible;
 
-        if (manager->priv->active && visible && !manager->priv->blank && !manager->priv->closed) {
+        if (manager->active && visible && !manager->blank && !manager->closed) {
                 gs_manager_timed_switch (manager);
         } else {
                 gs_manager_stop_switch (manager);
@@ -678,23 +673,24 @@ gs_manager_set_session_visible (GSManager *manager,
 gboolean
 gs_manager_get_session_visible (GSManager *manager)
 {
-        g_return_val_if_fail (manager != NULL, FALSE);
         g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
 
-        return manager->priv->visible;
+        return manager->visible;
 }
 
 void
 gs_manager_set_blank_screen (GSManager *manager,
                              gboolean   blank)
 {
-        manager->priv->blank = blank;
+        g_return_if_fail (GS_IS_MANAGER (manager));
 
-        if (!manager->priv->active && blank) {
+        manager->blank = blank;
+
+        if (!manager->active && blank) {
                 gs_manager_timed_lock (manager);
         } else {
                 gs_manager_stop_lock (manager);
-                if (manager->priv->active && manager->priv->visible && !manager->priv->closed) {
+                if (manager->active && manager->visible && !manager->closed) {
                         gs_manager_timed_switch (manager);
                 }
         }
@@ -703,19 +699,19 @@ gs_manager_set_blank_screen (GSManager *manager,
 gboolean
 gs_manager_get_blank_screen (GSManager *manager)
 {
-        g_return_val_if_fail (manager != NULL, FALSE);
         g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
 
-        return manager->priv->blank;
+        return manager->blank;
 }
 
 void
 gs_manager_set_lid_closed (GSManager *manager,
                            gboolean   closed)
 {
-        manager->priv->closed = closed;
+        g_return_if_fail (GS_IS_MANAGER (manager));
+        manager->closed = closed;
 
-        if (manager->priv->active && manager->priv->visible && !manager->priv->blank && !closed) {
+        if (manager->active && manager->visible && !manager->blank && !closed) {
                 gs_manager_timed_switch (manager);
         } else {
                 gs_manager_stop_switch (manager);
@@ -726,7 +722,9 @@ void
 gs_manager_set_lock_after (GSManager *manager,
                            guint      lock_after)
 {
-        manager->priv->lock_after = lock_after;
+        g_return_if_fail (GS_IS_MANAGER (manager));
+
+        manager->lock_after = lock_after;
 }
 
 void
@@ -734,12 +732,14 @@ gs_manager_show_content (GSManager *manager)
 {
         GSList *l;
 
-        if (manager->priv->show_content)
+        g_return_if_fail (GS_IS_MANAGER (manager));
+
+        if (manager->show_content)
                 return;
 
-        manager->priv->show_content = TRUE;
+        manager->show_content = TRUE;
 
-        for (l = manager->priv->windows; l; l = l->next) {
+        for (l = manager->windows; l; l = l->next) {
                 gtk_widget_queue_draw (gs_window_get_drawing_area (l->data));
         }
 }
diff --git a/src/gs-manager.h b/src/gs-manager.h
index ebf369e..4bbbaf9 100644
--- a/src/gs-manager.h
+++ b/src/gs-manager.h
@@ -25,32 +25,8 @@
 
 G_BEGIN_DECLS
 
-#define GS_TYPE_MANAGER         (gs_manager_get_type ())
-#define GS_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_MANAGER, GSManager))
-#define GS_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_MANAGER, GSManagerClass))
-#define GS_IS_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_MANAGER))
-#define GS_IS_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_MANAGER))
-#define GS_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_MANAGER, GSManagerClass))
-
-typedef struct GSManagerPrivate GSManagerPrivate;
-
-typedef struct
-{
-        GObject          parent;
-        GSManagerPrivate *priv;
-} GSManager;
-
-typedef struct
-{
-        GObjectClass     parent_class;
-
-        void            (* activated)          (GSManager *manager);
-        void            (* switch_greeter)     (GSManager *manager);
-        void            (* lock)               (GSManager *manager);
-
-} GSManagerClass;
-
-GType       gs_manager_get_type             (void);
+#define GS_TYPE_MANAGER gs_manager_get_type ()
+G_DECLARE_FINAL_TYPE (GSManager, gs_manager, GS, MANAGER, GObject)
 
 GSManager * gs_manager_new                  (void);
 
-- 
2.30.0