From: Nishant Chaprana Date: Mon, 2 Nov 2020 11:05:11 +0000 (+0530) Subject: Emit StateChangedProperties post emitting service state's PropertyChanged X-Git-Tag: submit/tizen/20201106.060323^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fconnman.git;a=commitdiff_plain;h=5269bd59e8100c6883b3f6e5609f57f8034e3140 Emit StateChangedProperties post emitting service state's PropertyChanged wifi-manager and libnet-client can use this signal instead of [PropertyChanged(state) signal + GetProperties call] combination for updating service information. Change-Id: I0203cb7df202ff3767a2c4d25e8ca685e4eb8ba8 Signed-off-by: Nishant Chaprana --- diff --git a/packaging/connman.spec b/packaging/connman.spec index 56cf406..072e8bf 100644 --- a/packaging/connman.spec +++ b/packaging/connman.spec @@ -5,7 +5,7 @@ Name: connman Version: 1.37 -Release: 48 +Release: 49 License: GPL-2.0+ Summary: Connection Manager Url: http://connman.net diff --git a/src/service.c b/src/service.c index a1e745d..f77c8a5 100755 --- a/src/service.c +++ b/src/service.c @@ -2969,6 +2969,31 @@ static void default_changed(void) __connman_notifier_default_changed(service); } +#if defined TIZEN_EXT +static void append_struct(gpointer value, gpointer user_data); + +static void emit_state_changed_with_properties(struct connman_service *service) +{ + DBusMessage *signal; + DBusMessageIter iter; + + if (!service) + return; + + signal = dbus_message_new_signal(service->path, CONNMAN_SERVICE_INTERFACE, + "StateChangedProperties"); + if (!signal) + return; + + dbus_message_iter_init_append(signal, &iter); + append_struct(service, &iter); + + g_dbus_send_message(connection, signal); + + return; +} +#endif + static void state_changed(struct connman_service *service) { const char *str; @@ -2982,14 +3007,17 @@ static void state_changed(struct connman_service *service) #if !defined TIZEN_EXT if (!allow_property_changed(service)) return; - -#endif -#if defined TIZEN_EXT +#else DBG(" %s, %s", str, service->path); #endif + connman_dbus_property_changed_basic(service->path, CONNMAN_SERVICE_INTERFACE, "State", DBUS_TYPE_STRING, &str); + +#if defined TIZEN_EXT + emit_state_changed_with_properties(service); +#endif } #if defined TIZEN_EXT @@ -7350,6 +7378,10 @@ static const GDBusMethodTable service_methods[] = { static const GDBusSignalTable service_signals[] = { { GDBUS_SIGNAL("PropertyChanged", GDBUS_ARGS({ "name", "s" }, { "value", "v" })) }, +#if defined TIZEN_EXT + { GDBUS_SIGNAL("StateChangedProperties", + GDBUS_ARGS({ "properties", "a{sv}" })) }, +#endif { }, };