From: injun.yang Date: Fri, 15 Sep 2017 09:22:20 +0000 (+0900) Subject: Set signal name to dbus subscription X-Git-Tag: submit/tizen/20170918.010837 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c236bdcf0e6a0ddcf1716a3e9181546d1e0fe602;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-agent.git Set signal name to dbus subscription [Problem] Redundant callback invoked [Cause & Measure] Set signal name to dbus subscritpion Change-Id: Id5dbecc42871a7f70a80d13e05498f47321c88f8 Signed-off-by: injun.yang Signed-off-by: DoHyun Pyun --- diff --git a/ag-agent/bluetooth-ag-agent.c b/ag-agent/bluetooth-ag-agent.c index 7cc6265..c1d9595 100644 --- a/ag-agent/bluetooth-ag-agent.c +++ b/ag-agent/bluetooth-ag-agent.c @@ -44,8 +44,9 @@ static GMainLoop *gmain_loop = NULL; static GDBusProxy *service_gproxy; -static int owner_sig_id = -1; -static int name_owner_sig_id = -1; +static guint interface_added_sig_id = 0; +static guint interface_removed_sig_id = 0; +static guint name_owner_sig_id = 0; GDBusConnection *ag_dbus_conn = NULL; gchar *remote_dev_path = NULL; gboolean wbs_en; @@ -64,8 +65,8 @@ static guint hf_bluez_id; static guint hs_bluez_id; static guint app_id; #ifdef TIZEN_FEATURE_BT_MEDIA_ENHANCE -static int media_sig_id = -1; -static int media_state_sig_id = -1; +static guint media_sig_id = 0; +static guint media_state_sig_id = 0; static bt_ag_media_transport_state_t transport_state; #endif @@ -4097,23 +4098,32 @@ static void __bt_ag_agent_dbus_deinit(void) if (ag_dbus_conn) { __bt_ag_unregister_profile_methods(); - if (owner_sig_id != -1) + if (interface_added_sig_id) g_dbus_connection_signal_unsubscribe(ag_dbus_conn, - owner_sig_id); + interface_added_sig_id); - if (name_owner_sig_id != -1) + if (interface_removed_sig_id) + g_dbus_connection_signal_unsubscribe(ag_dbus_conn, + interface_removed_sig_id); + + if (name_owner_sig_id) g_dbus_connection_signal_unsubscribe(ag_dbus_conn, name_owner_sig_id); #ifdef TIZEN_FEATURE_BT_MEDIA_ENHANCE - if (media_sig_id != -1) + if (media_sig_id) g_dbus_connection_signal_unsubscribe(ag_dbus_conn, media_sig_id); + media_sig_id = 0; - if (media_state_sig_id != -1) + if (media_state_sig_id) g_dbus_connection_signal_unsubscribe(ag_dbus_conn, media_state_sig_id); + media_state_sig_id = 0; #endif - name_owner_sig_id = -1; + + interface_added_sig_id = 0; + interface_removed_sig_id = 0; + name_owner_sig_id = 0; g_free(sco_owner); sco_owner = NULL; @@ -4324,9 +4334,16 @@ static void __bt_ag_agent_dbus_init(void) HSP_AG_UUID, "Headset Audio Gateway"); } - owner_sig_id = g_dbus_connection_signal_subscribe(ag_dbus_conn, - NULL, BT_MANAGER_INTERFACE, NULL, NULL, NULL, 0, + interface_added_sig_id = g_dbus_connection_signal_subscribe(ag_dbus_conn, + NULL, BT_MANAGER_INTERFACE, + BT_INTERFACES_ADDED, NULL, NULL, 0, __bt_ag_agent_filter_cb, NULL, NULL); + + interface_removed_sig_id = g_dbus_connection_signal_subscribe(ag_dbus_conn, + NULL, BT_MANAGER_INTERFACE, + BT_INTERFACES_REMOVED, NULL, NULL, 0, + __bt_ag_agent_filter_cb, NULL, NULL); + #ifdef TIZEN_FEATURE_BT_MEDIA_ENHANCE media_sig_id = g_dbus_connection_signal_subscribe(ag_dbus_conn, NULL, BT_PROPERTIES_INTERFACE, NULL, NULL, diff --git a/ag-agent/bluetooth-ag-agent.h b/ag-agent/bluetooth-ag-agent.h index e0d60cf..3198660 100755 --- a/ag-agent/bluetooth-ag-agent.h +++ b/ag-agent/bluetooth-ag-agent.h @@ -75,6 +75,8 @@ #define TELEPHONY_APP_INTERFACE "org.tizen.csd.Call.Instance" #define BT_HEADSET_INTERFACE "org.bluez.Headset" #define BT_ADAPTER_INTERFACE "org.bluez.Adapter1" +#define BT_INTERFACES_ADDED "InterfacesAdded" +#define BT_INTERFACES_REMOVED "InterfacesRemoved" #ifdef TIZEN_FEATURE_BT_MEDIA_ENHANCE #define BT_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" #define BLUEZ_MEDIA_TRANSPORT_INTERFACE "org.bluez.MediaTransport1" diff --git a/hf-agent/bluetooth-hf-agent.c b/hf-agent/bluetooth-hf-agent.c index 7ac16c2..8ea0c85 100755 --- a/hf-agent/bluetooth-hf-agent.c +++ b/hf-agent/bluetooth-hf-agent.c @@ -66,7 +66,8 @@ static char *g_obj_path; static GDBusConnection *gdbus_conn; static GDBusProxy *service_gproxy; -static int owner_sig_id = -1; +static guint interface_added_sig_id; +static guint interface_removed_sig_id; int g_id = 0; uint16_t hf_ver; @@ -3081,9 +3082,14 @@ static void __bt_hf_agent_dbus_init(void) return; } - owner_sig_id = g_dbus_connection_signal_subscribe(conn, - NULL, BT_MANAGER_INTERFACE, NULL, NULL, NULL, 0, + interface_added_sig_id = g_dbus_connection_signal_subscribe(conn, + NULL, BT_MANAGER_INTERFACE, BT_INTERFACES_ADDED, NULL, NULL, 0, __bt_hf_agent_filter_cb, NULL, NULL); + + interface_removed_sig_id = g_dbus_connection_signal_subscribe(conn, + NULL, BT_MANAGER_INTERFACE, BT_INTERFACES_REMOVED, NULL, NULL, 0, + __bt_hf_agent_filter_cb, NULL, NULL); + DBG("-"); return; } @@ -3097,9 +3103,16 @@ static void __bt_hf_agent_dbus_deinit(void) } if (gdbus_conn) { - if (owner_sig_id != -1) + if (interface_added_sig_id > 0) g_dbus_connection_signal_unsubscribe(gdbus_conn, - owner_sig_id); + interface_added_sig_id); + + if (interface_removed_sig_id > 0) + g_dbus_connection_signal_unsubscribe(gdbus_conn, + interface_removed_sig_id); + + interface_added_sig_id = 0; + interface_removed_sig_id = 0; g_object_unref(gdbus_conn); gdbus_conn = NULL; diff --git a/hf-agent/bluetooth-hf-agent.h b/hf-agent/bluetooth-hf-agent.h index cfe9952..da34405 100644 --- a/hf-agent/bluetooth-hf-agent.h +++ b/hf-agent/bluetooth-hf-agent.h @@ -258,6 +258,9 @@ typedef enum { #define BT_MANAGER_INTERFACE "org.freedesktop.DBus.ObjectManager" #define BT_ADAPTER_INTERFACE "org.bluez.Adapter1" +#define BT_INTERFACES_ADDED "InterfacesAdded" +#define BT_INTERFACES_REMOVED "InterfacesRemoved" + #define retv_if(expr, val) \ do { \ if (expr) { \ diff --git a/hid-agent/bluetooth-hid-agent.c b/hid-agent/bluetooth-hid-agent.c index 323713e..031d16a 100644 --- a/hid-agent/bluetooth-hid-agent.c +++ b/hid-agent/bluetooth-hid-agent.c @@ -29,7 +29,8 @@ static char *g_obj_path; static GDBusConnection *gdbus_conn; static GDBusProxy *profile_gproxy; -static guint owner_sig_id; +static guint interface_added_sig_id; +static guint interface_removed_sig_id; static guint bluez_device_sig_id; static guint name_owner_sig_id; @@ -742,8 +743,12 @@ static void __bt_hid_agent_dbus_init(void) __bt_hid_agent_register(); } - owner_sig_id = g_dbus_connection_signal_subscribe(conn, - NULL, BT_MANAGER_INTERFACE, NULL, NULL, NULL, 0, + interface_added_sig_id = g_dbus_connection_signal_subscribe(conn, + NULL, BT_MANAGER_INTERFACE, BT_INTERFACES_ADDED, NULL, NULL, 0, + __bt_hid_agent_filter_cb, NULL, NULL); + + interface_removed_sig_id = g_dbus_connection_signal_subscribe(conn, + NULL, BT_MANAGER_INTERFACE, BT_INTERFACES_REMOVED, NULL, NULL, 0, __bt_hid_agent_filter_cb, NULL, NULL); bluez_device_sig_id = g_dbus_connection_signal_subscribe(conn, @@ -764,9 +769,13 @@ static void __bt_hid_agent_dbus_deinit(void) } if (gdbus_conn) { - if (owner_sig_id > 0) + if (interface_added_sig_id > 0) + g_dbus_connection_signal_unsubscribe(gdbus_conn, + interface_added_sig_id); + + if (interface_removed_sig_id > 0) g_dbus_connection_signal_unsubscribe(gdbus_conn, - owner_sig_id); + interface_removed_sig_id); if (bluez_device_sig_id > 0) g_dbus_connection_signal_unsubscribe(gdbus_conn, @@ -776,7 +785,8 @@ static void __bt_hid_agent_dbus_deinit(void) g_dbus_connection_signal_unsubscribe(gdbus_conn, name_owner_sig_id); - owner_sig_id = 0; + interface_added_sig_id = 0; + interface_removed_sig_id = 0; bluez_device_sig_id = 0; name_owner_sig_id = 0; diff --git a/hid-agent/bluetooth-hid-agent.h b/hid-agent/bluetooth-hid-agent.h index 8149ce6..9a24cb3 100644 --- a/hid-agent/bluetooth-hid-agent.h +++ b/hid-agent/bluetooth-hid-agent.h @@ -75,6 +75,10 @@ #define BT_ADAPTER_INTERFACE "org.bluez.Adapter1" #define BT_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" +#define BT_INTERFACES_ADDED "InterfacesAdded" +#define BT_INTERFACES_REMOVED "InterfacesRemoved" +#define BT_PROPERTY_CHANGED "PropertiesChanged" + #define BLUEZ_MEDIA_TRANSPORT_INTERFACE "org.bluez.MediaTransport1" #define BLUEZ_MEDIA_ENDPOINT_INTERFACE "org.bluez.MediaEndpoint1" #define BLUEZ_DEVICE_INTERFACE "org.bluez.Device1"