From b20cef2e1beae61cb2335edb8cb0aa3932facd54 Mon Sep 17 00:00:00 2001 From: Witold Sowa Date: Tue, 22 Sep 2009 23:44:45 -0700 Subject: [PATCH] libnm-glib: add 'connections-read' signal to settings interface To let listeners know when all connections have been found. --- libnm-glib/nm-remote-settings.c | 10 ++++++++++ libnm-glib/nm-settings-interface.c | 8 ++++++++ libnm-glib/nm-settings-interface.h | 5 ++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libnm-glib/nm-remote-settings.c b/libnm-glib/nm-remote-settings.c index c81be430b6..d7be8fbb04 100644 --- a/libnm-glib/nm-remote-settings.c +++ b/libnm-glib/nm-remote-settings.c @@ -124,6 +124,10 @@ connection_init_result_cb (NMRemoteConnection *remote, } g_hash_table_remove (priv->pending, path); + + /* Let listeners know that all connections have been found */ + if (!g_hash_table_size (priv->pending)) + g_signal_emit_by_name (self, NM_SETTINGS_INTERFACE_CONNECTIONS_READ); } static void @@ -171,6 +175,12 @@ fetch_connections_done (DBusGProxy *proxy, return; } + /* Let listeners know we are done getting connections */ + if (connections->len == 0) { + g_signal_emit_by_name (self, NM_SETTINGS_INTERFACE_CONNECTIONS_READ); + return; + } + for (i = 0; connections && (i < connections->len); i++) { char *path = g_ptr_array_index (connections, i); diff --git a/libnm-glib/nm-settings-interface.c b/libnm-glib/nm-settings-interface.c index 51a9ad00d6..f320953058 100644 --- a/libnm-glib/nm-settings-interface.c +++ b/libnm-glib/nm-settings-interface.c @@ -162,6 +162,14 @@ nm_settings_interface_init (gpointer g_iface) g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); + g_signal_new (NM_SETTINGS_INTERFACE_CONNECTIONS_READ, + iface_type, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMSettingsInterface, connections_read), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + initialized = TRUE; } diff --git a/libnm-glib/nm-settings-interface.h b/libnm-glib/nm-settings-interface.h index 44c4d9dc2e..fd9e48a508 100644 --- a/libnm-glib/nm-settings-interface.h +++ b/libnm-glib/nm-settings-interface.h @@ -48,7 +48,8 @@ GType nm_settings_interface_error_get_type (void); #define NM_IS_SETTINGS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTINGS_INTERFACE)) #define NM_SETTINGS_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NM_TYPE_SETTINGS_INTERFACE, NMSettingsInterface)) -#define NM_SETTINGS_INTERFACE_NEW_CONNECTION "new-connection" +#define NM_SETTINGS_INTERFACE_NEW_CONNECTION "new-connection" +#define NM_SETTINGS_INTERFACE_CONNECTIONS_READ "connections-read" typedef struct _NMSettingsInterface NMSettingsInterface; @@ -74,6 +75,8 @@ struct _NMSettingsInterface { /* Signals */ void (*new_connection) (NMSettingsInterface *settings, NMSettingsConnectionInterface *connection); + + void (*connections_read) (NMSettingsInterface *settings); }; GType nm_settings_interface_get_type (void);