From 4a9eaa190fbfd82e4f285e4fde0c0940a0a50a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20=C5=A0imerda?= Date: Fri, 2 Jan 2015 22:41:00 +0100 Subject: session: switch code to nm_session_monitor_{,dis}connect() Acked-By: Thomas Haller --- src/nm-session-monitor.c | 30 ++++++++++++++++++++++++++++++ src/nm-session-monitor.h | 6 +++++- src/settings/nm-settings-connection.c | 9 ++------- 3 files changed, 37 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/nm-session-monitor.c b/src/nm-session-monitor.c index c9ee3426f3..6ba0bb92f8 100644 --- a/src/nm-session-monitor.c +++ b/src/nm-session-monitor.c @@ -22,6 +22,36 @@ #include "nm-session-monitor.h" +/** + * nm_session_monitor_connect: + * @callback: The callback. + * @user_data: User data for the callback. + * + * Connect a callback to the session monitor. + * + * Returns: Handler ID to be used with nm_session_monitor_disconnect(). + */ +gulong +nm_session_monitor_connect (NMSessionCallback callback, gpointer user_data) +{ + return g_signal_connect (nm_session_monitor_get (), + NM_SESSION_MONITOR_CHANGED, + G_CALLBACK (callback), + user_data); +} + +/** + * nm_session_monitor_disconnect: + * @handler_id: Handler ID returned by nm_session_monitor-connect(). + * + * Disconnect callback from the session handler. + */ +void +nm_session_monitor_disconnect (gulong handler_id) +{ + g_signal_handler_disconnect (nm_session_monitor_get (), handler_id); +} + /** * nm_session_monitor_uid_to_user: * @uid: UID. diff --git a/src/nm-session-monitor.h b/src/nm-session-monitor.h index 818941ef79..9a38dc0eee 100644 --- a/src/nm-session-monitor.h +++ b/src/nm-session-monitor.h @@ -38,9 +38,14 @@ G_BEGIN_DECLS typedef struct _NMSessionMonitorClass NMSessionMonitorClass; +typedef void (*NMSessionCallback) (NMSessionMonitor *monitor, gpointer user_data); + GType nm_session_monitor_get_type (void) G_GNUC_CONST; NMSessionMonitor *nm_session_monitor_get (void); +gulong nm_session_monitor_connect (NMSessionCallback callback, gpointer user_data); +void nm_session_monitor_disconnect (gulong handler_id); + gboolean nm_session_monitor_uid_to_user (uid_t uid, const char **out_user); gboolean nm_session_monitor_user_to_uid (const char *user, uid_t *out_uid); gboolean nm_session_monitor_session_exists (uid_t uid, gboolean active); @@ -54,7 +59,6 @@ gboolean nm_session_monitor_uid_has_session (NMSessionMonitor *monitor uid_t uid, const char **out_user, GError **error); - gboolean nm_session_monitor_user_active (NMSessionMonitor *monitor, const char *username, GError **error); diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index f03ba629a3..25459c2077 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -95,7 +95,6 @@ static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { NMAgentManager *agent_mgr; - NMSessionMonitor *session_monitor; guint session_changed_id; NMSettingsConnectionFlags flags; @@ -2177,11 +2176,7 @@ nm_settings_connection_init (NMSettingsConnection *self) priv->visible = FALSE; - priv->session_monitor = nm_session_monitor_get (); - priv->session_changed_id = g_signal_connect (priv->session_monitor, - NM_SESSION_MONITOR_CHANGED, - G_CALLBACK (session_changed_cb), - self); + priv->session_changed_id = nm_session_monitor_connect (session_changed_cb, self); priv->agent_mgr = nm_agent_manager_get (); @@ -2232,7 +2227,7 @@ dispose (GObject *object) set_visible (self, FALSE); if (priv->session_changed_id) { - g_signal_handler_disconnect (priv->session_monitor, priv->session_changed_id); + nm_session_monitor_disconnect (priv->session_changed_id); priv->session_changed_id = 0; } g_clear_object (&priv->agent_mgr); -- cgit v1.2.1