summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Šimerda <psimerda@redhat.com>2015-01-02 22:41:00 +0100
committerPavel Šimerda <psimerda@redhat.com>2015-01-05 18:39:17 +0100
commit4a9eaa190fbfd82e4f285e4fde0c0940a0a50a1c (patch)
tree653b325704f5a2395d6e4030339402b86dd87496
parentd42f2c11b79cf46701d046a418d39d03f3809582 (diff)
downloadNetworkManager-4a9eaa190fbfd82e4f285e4fde0c0940a0a50a1c.tar.gz
session: switch code to nm_session_monitor_{,dis}connect()
Acked-By: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/nm-session-monitor.c30
-rw-r--r--src/nm-session-monitor.h6
-rw-r--r--src/settings/nm-settings-connection.c9
3 files changed, 37 insertions, 8 deletions
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
@@ -23,6 +23,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.
* @out_user: Return location for user name.
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);