From bb0063f71189ba1272f49247c023e29d6087ec8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= <corentin@elementary.io> Date: Mon, 1 Apr 2019 07:49:35 +0200 Subject: [PATCH 1/5] GSMonitor: use modern GObject syntax --- configure.ac.in | 2 +- meson.build | 2 +- src/gs-monitor.c | 374 ++++++++++++++++++++--------------------------- src/gs-monitor.h | 23 +-- 4 files changed, 161 insertions(+), 240 deletions(-) diff --git a/configure.ac.in b/configure.ac.in index f95863a..67c271b 100644 --- a/configure.ac.in +++ b/configure.ac.in @@ -44,7 +44,7 @@ GLIB_GSETTINGS # Dependencies DBUS_REQUIRED_VERSION=0.30 -GLIB_REQUIRED_VERSION=2.25.6 +GLIB_REQUIRED_VERSION=2.44 GTK_REQUIRED_VERSION=3.0 X11_REQUIRED_VERSION=1.0 diff --git a/meson.build b/meson.build index 2b8d712..6883cd8 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project('light-locker', 'c', version: '1.9.0', meson_version: '>=0.44.0') gnome = import('gnome') i18n = import('i18n') -glib_required_version = '2.25.6' +glib_required_version = '2.44' glib_dep = dependency('glib-2.0', version: '>='+glib_required_version) gio_dep = dependency('gio-2.0', version: '>='+glib_required_version) gobject_dep = dependency('gobject-2.0', version: '>='+glib_required_version) diff --git a/src/gs-monitor.c b/src/gs-monitor.c index f0e2592..da0630b 100644 --- a/src/gs-monitor.c +++ b/src/gs-monitor.c @@ -39,48 +39,34 @@ #include "gs-monitor.h" #include "gs-debug.h" -static void gs_monitor_class_init (GSMonitorClass *klass); -static void gs_monitor_init (GSMonitor *monitor); -static void gs_monitor_finalize (GObject *object); - -#define GS_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_MONITOR, GSMonitorPrivate)) - -struct GSMonitorPrivate +struct _GSMonitor { + GObject parent_instance; + GSListener *listener; GSListenerX11 *listener_x11; GSManager *manager; LLConfig *conf; - guint late_locking : 1; - guint lock_on_suspend : 1; - guint idle_hint : 1; - guint perform_lock : 1; - guint lock_on_lid : 1; + gboolean late_locking; + gboolean lock_on_suspend; + gboolean idle_hint; + gboolean perform_lock; + gboolean lock_on_lid; }; G_DEFINE_TYPE (GSMonitor, gs_monitor, G_TYPE_OBJECT) -static void -gs_monitor_class_init (GSMonitorClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->finalize = gs_monitor_finalize; - - g_type_class_add_private (klass, sizeof (GSMonitorPrivate)); -} - static void gs_monitor_lock_screen (GSMonitor *monitor) { gboolean res; gboolean active; - active = gs_manager_get_active (monitor->priv->manager); + active = gs_manager_get_active (monitor->manager); if (! active) { - res = gs_listener_set_active (monitor->priv->listener, TRUE); + res = gs_listener_set_active (monitor->listener, TRUE); if (! res) { gs_debug ("Unable to lock the screen"); } @@ -93,14 +79,14 @@ gs_monitor_lock_session (GSMonitor *monitor) { gboolean visible; - visible = gs_manager_get_session_visible (monitor->priv->manager); + visible = gs_manager_get_session_visible (monitor->manager); /* Only switch to greeter if we are the visible session */ if (visible) { - gs_listener_send_lock_session (monitor->priv->listener); + gs_listener_send_lock_session (monitor->listener); } else { /* Show the content in case the session gets visible again. */ - gs_manager_show_content (monitor->priv->manager); + gs_manager_show_content (monitor->manager); } return FALSE; @@ -111,14 +97,14 @@ gs_monitor_switch_greeter (GSMonitor *monitor) { gboolean visible; - visible = gs_manager_get_session_visible (monitor->priv->manager); + visible = gs_manager_get_session_visible (monitor->manager); /* Only switch to greeter if we are the visible session */ if (visible) { - gs_listener_send_switch_greeter (monitor->priv->listener); + gs_listener_send_switch_greeter (monitor->listener); } else { /* Show the content in case the session gets visible again. */ - gs_manager_show_content (monitor->priv->manager); + gs_manager_show_content (monitor->manager); } return FALSE; @@ -128,14 +114,14 @@ static void manager_activated_cb (GSManager *manager, GSMonitor *monitor) { - gs_listener_resume_suspend (monitor->priv->listener); + gs_listener_resume_suspend (monitor->listener); } static void manager_switch_greeter_cb (GSManager *manager, GSMonitor *monitor) { - gs_listener_send_switch_greeter (monitor->priv->listener); + gs_listener_send_switch_greeter (monitor->listener); } static void @@ -143,9 +129,9 @@ manager_lock_cb (GSManager *manager, GSMonitor *monitor) { gs_monitor_lock_screen (monitor); - if (monitor->priv->late_locking) { - monitor->priv->perform_lock = TRUE; - } else if (gs_manager_get_session_visible (monitor->priv->manager)) { + if (monitor->late_locking) { + monitor->perform_lock = TRUE; + } else if (gs_manager_get_session_visible (monitor->manager)) { /* Add a 1s delay for VT switching. * This seems to preserved content exposure. */ @@ -153,7 +139,7 @@ manager_lock_cb (GSManager *manager, (GSourceFunc)gs_monitor_lock_session, monitor); } else { - gs_manager_show_content (monitor->priv->manager); + gs_manager_show_content (monitor->manager); } } @@ -162,18 +148,14 @@ conf_lock_on_suspend_cb (LLConfig *conf, GParamSpec *pspec, GSMonitor *monitor) { - gboolean lock_on_suspend = FALSE; - g_object_get (G_OBJECT(conf), - "lock-on-suspend", &lock_on_suspend, + "lock-on-suspend", &monitor->lock_on_suspend, NULL); - monitor->priv->lock_on_suspend = lock_on_suspend; - - if (lock_on_suspend) { - gs_listener_delay_suspend (monitor->priv->listener); + if (monitor->lock_on_suspend) { + gs_listener_delay_suspend (monitor->listener); } else { - gs_listener_resume_suspend (monitor->priv->listener); + gs_listener_resume_suspend (monitor->listener); } } @@ -182,13 +164,9 @@ conf_late_locking_cb (LLConfig *conf, GParamSpec *pspec, GSMonitor *monitor) { - gboolean late_locking = FALSE; - g_object_get (G_OBJECT(conf), - "late-locking", &late_locking, + "late-locking", &monitor->late_locking, NULL); - - monitor->priv->late_locking = late_locking; } static void @@ -202,7 +180,7 @@ conf_lock_after_screensaver_cb (LLConfig *conf, "lock-after-screensaver", &lock_after_screensaver, NULL); - gs_manager_set_lock_after (monitor->priv->manager, lock_after_screensaver); + gs_manager_set_lock_after (monitor->manager, lock_after_screensaver); } static void @@ -210,13 +188,9 @@ conf_lock_on_lid_cb (LLConfig *conf, GParamSpec *pspec, GSMonitor *monitor) { - gboolean lock_on_lid = FALSE; - g_object_get (G_OBJECT(conf), - "lock-on-lid", &lock_on_lid, + "lock-on-lid", &monitor->lock_on_lid, NULL); - - monitor->priv->lock_on_lid = lock_on_lid; } static void @@ -224,50 +198,21 @@ conf_idle_hint_cb (LLConfig *conf, GParamSpec *pspec, GSMonitor *monitor) { - gboolean idle_hint = FALSE; - g_object_get (G_OBJECT(conf), - "idle_hint", &idle_hint, + "idle_hint", &monitor->idle_hint, NULL); - monitor->priv->idle_hint = idle_hint; - - gs_listener_set_idle_hint (monitor->priv->listener, - idle_hint && gs_manager_get_blank_screen (monitor->priv->manager)); -} - -static void -disconnect_conf_signals (GSMonitor *monitor) -{ - g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_lock_on_suspend_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_late_locking_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_lock_after_screensaver_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_lock_on_lid_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->conf, conf_idle_hint_cb, monitor); -} - -static void -connect_conf_signals (GSMonitor *monitor) -{ - g_signal_connect (monitor->priv->conf, "notify::lock-on-suspend", - G_CALLBACK (conf_lock_on_suspend_cb), monitor); - g_signal_connect (monitor->priv->conf, "notify::late-locking", - G_CALLBACK (conf_late_locking_cb), monitor); - g_signal_connect (monitor->priv->conf, "notify::lock-after-screensaver", - G_CALLBACK (conf_lock_after_screensaver_cb), monitor); - g_signal_connect (monitor->priv->conf, "notify::lock-on-lid", - G_CALLBACK (conf_lock_on_lid_cb), monitor); - g_signal_connect (monitor->priv->conf, "notify::idle-hint", - G_CALLBACK (conf_idle_hint_cb), monitor); + gs_listener_set_idle_hint (monitor->listener, + monitor->idle_hint && gs_manager_get_blank_screen (monitor->manager)); } static void listener_locked_cb (GSListener *listener, GSMonitor *monitor) { - gs_manager_show_content (monitor->priv->manager); + gs_manager_show_content (monitor->manager); gs_monitor_lock_screen (monitor); - monitor->priv->perform_lock = FALSE; + monitor->perform_lock = FALSE; } static void @@ -277,8 +222,8 @@ listener_lock_cb (GSListener *listener, gs_monitor_lock_screen (monitor); if (gs_listener_is_lid_closed (listener)) { /* Don't switch VT while the lid is closed. */ - monitor->priv->perform_lock = TRUE; - } else if (gs_manager_get_session_visible (monitor->priv->manager)) { + monitor->perform_lock = TRUE; + } else if (gs_manager_get_session_visible (monitor->manager)) { /* Add a 1s delay for VT switching. * This seems to preserved content exposure. */ @@ -286,7 +231,7 @@ listener_lock_cb (GSListener *listener, (GSourceFunc)gs_monitor_lock_session, monitor); } else { - gs_manager_show_content (monitor->priv->manager); + gs_manager_show_content (monitor->manager); } } @@ -296,7 +241,7 @@ listener_session_switched_cb (GSListener *listener, GSMonitor *monitor) { gs_debug ("Session switched: %d", active); - gs_manager_set_session_visible (monitor->priv->manager, active); + gs_manager_set_session_visible (monitor->manager, active); } static gboolean @@ -307,11 +252,11 @@ listener_active_changed_cb (GSListener *listener, gboolean res; gboolean ret; - if (monitor->priv->lock_on_suspend && !active) { - gs_listener_delay_suspend (monitor->priv->listener); + if (monitor->lock_on_suspend && !active) { + gs_listener_delay_suspend (monitor->listener); } - res = gs_manager_set_active (monitor->priv->manager, active); + res = gs_manager_set_active (monitor->manager, active); if (! res) { gs_debug ("Unable to set manager active: %d", active); ret = FALSE; @@ -329,7 +274,7 @@ static void listener_suspend_cb (GSListener *listener, GSMonitor *monitor) { - if (! monitor->priv->lock_on_suspend) + if (! monitor->lock_on_suspend) return; /* Show the lock screen until resume. * We lock the screen here even when the displaymanager didn't send the signal. @@ -342,14 +287,14 @@ static void listener_resume_cb (GSListener *listener, GSMonitor *monitor) { - if (! monitor->priv->lock_on_suspend) + if (! monitor->lock_on_suspend) return; - if (gs_listener_is_lid_closed (monitor->priv->listener)) { + if (gs_listener_is_lid_closed (monitor->listener)) { /* This will become a lock instead of a switch. * As a corner case this is ok. */ /* Don't switch VT while the lid is closed. */ - monitor->priv->perform_lock = TRUE; + monitor->perform_lock = TRUE; } else { /* Add a 1s delay for resume to complete. * This seems to fix backlight issues. @@ -364,7 +309,7 @@ static void listener_simulate_user_activity_cb (GSListener *listener, GSMonitor *monitor) { - gs_listener_x11_simulate_activity (monitor->priv->listener_x11); + gs_listener_x11_simulate_activity (monitor->listener_x11); } static gboolean @@ -375,11 +320,11 @@ listener_blanking_cb (GSListener *listener, if (! active) { /* Don't deactivate the screensaver if we are locked */ - if (gs_manager_get_active (monitor->priv->manager)) + if (gs_manager_get_active (monitor->manager)) return FALSE; } - return gs_listener_x11_force_blanking (monitor->priv->listener_x11, active); + return gs_listener_x11_force_blanking (monitor->listener_x11, active); } static void @@ -387,14 +332,14 @@ listener_inhibit_cb (GSListener *listener, gboolean active, GSMonitor *monitor) { - gs_listener_x11_inhibit (monitor->priv->listener_x11, active); + gs_listener_x11_inhibit (monitor->listener_x11, active); } static gulong listener_idle_time_cb (GSListener *listener, GSMonitor *monitor) { - return gs_listener_x11_idle_time (monitor->priv->listener_x11); + return gs_listener_x11_idle_time (monitor->listener_x11); } static void @@ -410,7 +355,7 @@ listener_lid_closed_cb (GSListener *listener, * In case of resume the switch would become a lock. * And in case of late locking, the screen saver state isn't taken into account. */ - if (monitor->priv->perform_lock && !closed) + if (monitor->perform_lock && !closed) { /* Add a 1s delay for resume to complete. * This seems to fix backlight issues. @@ -418,13 +363,13 @@ listener_lid_closed_cb (GSListener *listener, g_timeout_add_seconds (1, (GSourceFunc)gs_monitor_lock_session, monitor); - monitor->priv->perform_lock = FALSE; + monitor->perform_lock = FALSE; return; } - gs_manager_set_lid_closed (monitor->priv->manager, closed); + gs_manager_set_lid_closed (monitor->manager, closed); - if (! monitor->priv->lock_on_lid) + if (! monitor->lock_on_lid) return; if (closed) @@ -452,168 +397,163 @@ listener_x11_blanking_changed_cb (GSListenerX11 *listener, GSMonitor *monitor) { gs_debug ("Blanking changed: %d", active); - gs_manager_set_blank_screen (monitor->priv->manager, active); - gs_listener_set_blanked (monitor->priv->listener, active); - if (monitor->priv->idle_hint) { - gs_listener_set_idle_hint (monitor->priv->listener, active); + gs_manager_set_blank_screen (monitor->manager, active); + gs_listener_set_blanked (monitor->listener, active); + if (monitor->idle_hint) { + gs_listener_set_idle_hint (monitor->listener, active); } /* If late locking is enabled only lock the session if the lid isn't closed. */ - if (!active && !gs_listener_is_lid_closed (monitor->priv->listener) && monitor->priv->perform_lock) { + if (!active && !gs_listener_is_lid_closed (monitor->listener) && monitor->perform_lock) { gs_monitor_lock_session (monitor); - monitor->priv->perform_lock = FALSE; + monitor->perform_lock = FALSE; } } static void -disconnect_listener_signals (GSMonitor *monitor) +gs_monitor_init (GSMonitor *monitor) { - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_locked_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_lock_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_session_switched_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_active_changed_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_suspend_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_resume_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_simulate_user_activity_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_blanking_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_inhibit_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_idle_time_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_lid_closed_cb, monitor); - - g_signal_handlers_disconnect_by_func (monitor->priv->listener_x11, listener_x11_blanking_changed_cb, monitor); -} +#ifdef WITH_LATE_LOCKING + monitor->late_locking = WITH_LATE_LOCKING; +#endif +#ifdef WITH_LOCK_ON_SUSPEND + monitor->lock_on_suspend = WITH_LOCK_ON_SUSPEND; +#endif +#ifdef WITH_LOCK_ON_LID + monitor->lock_on_lid = WITH_LOCK_ON_LID; +#endif + monitor->idle_hint = FALSE; -static void -connect_listener_signals (GSMonitor *monitor) -{ - g_signal_connect (monitor->priv->listener, "locked", + monitor->listener = gs_listener_new (); + monitor->listener_x11 = gs_listener_x11_new (); + monitor->manager = gs_manager_new (); + + /* + * Listener signals + */ + g_signal_connect (monitor->listener, "locked", G_CALLBACK (listener_locked_cb), monitor); - g_signal_connect (monitor->priv->listener, "lock", + g_signal_connect (monitor->listener, "lock", G_CALLBACK (listener_lock_cb), monitor); - g_signal_connect (monitor->priv->listener, "session-switched", + g_signal_connect (monitor->listener, "session-switched", G_CALLBACK (listener_session_switched_cb), monitor); - g_signal_connect (monitor->priv->listener, "active-changed", + g_signal_connect (monitor->listener, "active-changed", G_CALLBACK (listener_active_changed_cb), monitor); - g_signal_connect (monitor->priv->listener, "suspend", + g_signal_connect (monitor->listener, "suspend", G_CALLBACK (listener_suspend_cb), monitor); - g_signal_connect (monitor->priv->listener, "resume", + g_signal_connect (monitor->listener, "resume", G_CALLBACK (listener_resume_cb), monitor); - g_signal_connect (monitor->priv->listener, "simulate-user-activity", + g_signal_connect (monitor->listener, "simulate-user-activity", G_CALLBACK (listener_simulate_user_activity_cb), monitor); - g_signal_connect (monitor->priv->listener, "blanking", + g_signal_connect (monitor->listener, "blanking", G_CALLBACK (listener_blanking_cb), monitor); - g_signal_connect (monitor->priv->listener, "inhibit", + g_signal_connect (monitor->listener, "inhibit", G_CALLBACK (listener_inhibit_cb), monitor); - g_signal_connect (monitor->priv->listener, "idle-time", + g_signal_connect (monitor->listener, "idle-time", G_CALLBACK (listener_idle_time_cb), monitor); - g_signal_connect (monitor->priv->listener, "notify::lid-closed", + g_signal_connect (monitor->listener, "notify::lid-closed", G_CALLBACK (listener_lid_closed_cb), monitor); - g_signal_connect (monitor->priv->listener_x11, "blanking-changed", + g_signal_connect (monitor->listener_x11, "blanking-changed", G_CALLBACK (listener_x11_blanking_changed_cb), monitor); -} - -static void -disconnect_manager_signals (GSMonitor *monitor) -{ - g_signal_handlers_disconnect_by_func (monitor->priv->manager, manager_activated_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->manager, manager_switch_greeter_cb, monitor); - g_signal_handlers_disconnect_by_func (monitor->priv->manager, manager_lock_cb, monitor); -} -static void -connect_manager_signals (GSMonitor *monitor) -{ - g_signal_connect (monitor->priv->manager, "activated", + /* + * Manager signals + */ + g_signal_connect (monitor->manager, "activated", G_CALLBACK (manager_activated_cb), monitor); - g_signal_connect (monitor->priv->manager, "switch-greeter", + g_signal_connect (monitor->manager, "switch-greeter", G_CALLBACK (manager_switch_greeter_cb), monitor); - g_signal_connect (monitor->priv->manager, "lock", + g_signal_connect (monitor->manager, "lock", G_CALLBACK (manager_lock_cb), monitor); } static void -gs_monitor_init (GSMonitor *monitor) +gs_monitor_dispose (GObject *object) { + GSMonitor *monitor = GS_MONITOR (object); - monitor->priv = GS_MONITOR_GET_PRIVATE (monitor); - -#ifdef WITH_LATE_LOCKING - monitor->priv->late_locking = WITH_LATE_LOCKING; -#endif -#ifdef WITH_LOCK_ON_SUSPEND - monitor->priv->lock_on_suspend = WITH_LOCK_ON_SUSPEND; -#endif -#ifdef WITH_LOCK_ON_LID - monitor->priv->lock_on_lid = WITH_LOCK_ON_LID; -#endif - monitor->priv->idle_hint = FALSE; + /* + * Conf signals + */ + g_signal_handlers_disconnect_by_func (monitor->conf, conf_lock_on_suspend_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->conf, conf_late_locking_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->conf, conf_lock_after_screensaver_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->conf, conf_lock_on_lid_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->conf, conf_idle_hint_cb, monitor); + + /* + * Listener signals + */ + g_signal_handlers_disconnect_by_func (monitor->listener, listener_locked_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_lock_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_session_switched_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_active_changed_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_suspend_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_resume_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_simulate_user_activity_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_blanking_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_inhibit_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_idle_time_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener, listener_lid_closed_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->listener_x11, listener_x11_blanking_changed_cb, monitor); + + /* + * Manager signals + */ + g_signal_handlers_disconnect_by_func (monitor->manager, manager_activated_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->manager, manager_switch_greeter_cb, monitor); + g_signal_handlers_disconnect_by_func (monitor->manager, manager_lock_cb, monitor); - monitor->priv->listener = gs_listener_new (); - monitor->priv->listener_x11 = gs_listener_x11_new (); - connect_listener_signals (monitor); + g_clear_object (&monitor->conf); + g_clear_object (&monitor->listener); + g_clear_object (&monitor->listener_x11); + g_clear_object (&monitor->manager); - monitor->priv->manager = gs_manager_new (); - connect_manager_signals (monitor); + G_OBJECT_CLASS (gs_monitor_parent_class)->dispose (object); } static void -gs_monitor_finalize (GObject *object) +gs_monitor_class_init (GSMonitorClass *klass) { - GSMonitor *monitor; - - g_return_if_fail (object != NULL); - g_return_if_fail (GS_IS_MONITOR (object)); - - monitor = GS_MONITOR (object); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_return_if_fail (monitor->priv != NULL); - - disconnect_conf_signals (monitor); - disconnect_listener_signals (monitor); - disconnect_manager_signals (monitor); - - g_object_unref (monitor->priv->conf); - g_object_unref (monitor->priv->listener); - g_object_unref (monitor->priv->listener_x11); - g_object_unref (monitor->priv->manager); - - G_OBJECT_CLASS (gs_monitor_parent_class)->finalize (object); + object_class->dispose = gs_monitor_dispose; } GSMonitor * gs_monitor_new (LLConfig *config) { GSMonitor *monitor; - gboolean late_locking = FALSE; - gboolean lock_on_suspend = FALSE; - gboolean lock_on_lid = FALSE; guint lock_after_screensaver = 5; - gboolean idle_hint = FALSE; monitor = g_object_new (GS_TYPE_MONITOR, NULL); - monitor->priv->conf = config; + monitor->conf = config; - connect_conf_signals (monitor); + g_signal_connect (monitor->conf, "notify::lock-on-suspend", + G_CALLBACK (conf_lock_on_suspend_cb), monitor); + g_signal_connect (monitor->conf, "notify::late-locking", + G_CALLBACK (conf_late_locking_cb), monitor); + g_signal_connect (monitor->conf, "notify::lock-after-screensaver", + G_CALLBACK (conf_lock_after_screensaver_cb), monitor); + g_signal_connect (monitor->conf, "notify::lock-on-lid", + G_CALLBACK (conf_lock_on_lid_cb), monitor); + g_signal_connect (monitor->conf, "notify::idle-hint", + G_CALLBACK (conf_idle_hint_cb), monitor); g_object_get (G_OBJECT (config), - "late-locking", &late_locking, - "lock-on-suspend", &lock_on_suspend, - "lock-on-lid", &lock_on_lid, + "late-locking", &monitor->late_locking, + "lock-on-suspend", &monitor->lock_on_suspend, + "lock-on-lid", &monitor->lock_on_lid, + "idle-hint", &monitor->idle_hint, "lock-after-screensaver", &lock_after_screensaver, - "idle-hint", &idle_hint, NULL); - monitor->priv->late_locking = late_locking; - monitor->priv->lock_on_suspend = lock_on_suspend; - monitor->priv->lock_on_lid = lock_on_lid; - monitor->priv->idle_hint = idle_hint; - - gs_manager_set_lock_after (monitor->priv->manager, lock_after_screensaver); + gs_manager_set_lock_after (monitor->manager, lock_after_screensaver); - if (lock_on_suspend) { - gs_listener_delay_suspend (monitor->priv->listener); + if (monitor->lock_on_suspend) { + gs_listener_delay_suspend (monitor->listener); } return GS_MONITOR (monitor); @@ -625,11 +565,11 @@ gs_monitor_start (GSMonitor *monitor, { g_return_val_if_fail (GS_IS_MONITOR (monitor), FALSE); - if (! gs_listener_acquire (monitor->priv->listener, error)) { + if (! gs_listener_acquire (monitor->listener, error)) { return FALSE; } - gs_listener_x11_acquire (monitor->priv->listener_x11); + gs_listener_x11_acquire (monitor->listener_x11); return TRUE; } diff --git a/src/gs-monitor.h b/src/gs-monitor.h index 735104f..dbfe422 100644 --- a/src/gs-monitor.h +++ b/src/gs-monitor.h @@ -25,27 +25,8 @@ G_BEGIN_DECLS -#define GS_TYPE_MONITOR (gs_monitor_get_type ()) -#define GS_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_MONITOR, GSMonitor)) -#define GS_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_MONITOR, GSMonitorClass)) -#define GS_IS_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_MONITOR)) -#define GS_IS_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_MONITOR)) -#define GS_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_MONITOR, GSMonitorClass)) - -typedef struct GSMonitorPrivate GSMonitorPrivate; - -typedef struct -{ - GObject parent; - GSMonitorPrivate *priv; -} GSMonitor; - -typedef struct -{ - GObjectClass parent_class; -} GSMonitorClass; - -GType gs_monitor_get_type (void); +#define GS_TYPE_MONITOR gs_monitor_get_type () +G_DECLARE_FINAL_TYPE (GSMonitor, gs_monitor, GS, MONITOR, GObject) GSMonitor * gs_monitor_new (LLConfig *config); gboolean gs_monitor_start (GSMonitor *monitor, -- 2.30.0