From 7260b267094d37ef067ed21a0252df361096148a Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 16 May 2009 07:34:42 -0700 Subject: [PATCH] Add special StateChanged signal --- doc/manager-api.txt | 9 +++++++++ src/element.c | 10 ++++++++++ src/manager.c | 1 + 3 files changed, 20 insertions(+) diff --git a/doc/manager-api.txt b/doc/manager-api.txt index 13ca366..7f1924e 100644 --- a/doc/manager-api.txt +++ b/doc/manager-api.txt @@ -62,6 +62,15 @@ Signals PropertyChanged(string name, variant value) This signal indicates a changed value of the given property. + StateChanged(string state) + + This signal is similar to the PropertyChanged signal + for the State property. + + It exists for application state only care about the + current state and so can avoid to be woken up when + other details changes. + Properties string State [readonly] The global connection state of a system. Possible diff --git a/src/element.c b/src/element.c index 712dec6..e4fd6f3 100644 --- a/src/element.c +++ b/src/element.c @@ -1065,6 +1065,16 @@ static void emit_state_change(DBusConnection *conn, const char *state) append_state(&entry, state); g_dbus_send_message(conn, signal); + + signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH, + CONNMAN_MANAGER_INTERFACE, "StateChanged"); + if (signal == NULL) + return; + + dbus_message_iter_init_append(signal, &entry); + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &state); + + g_dbus_send_message(conn, signal); } static void probe_element(struct connman_element *element) diff --git a/src/manager.c b/src/manager.c index f5c50f6..14ea6ca 100644 --- a/src/manager.c +++ b/src/manager.c @@ -388,6 +388,7 @@ static GDBusMethodTable manager_methods[] = { static GDBusSignalTable manager_signals[] = { { "PropertyChanged", "sv" }, + { "StateChanged", "s" }, { }, }; -- 2.7.4