summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikel Astiz <mikel.astiz@bmw-carit.de>2012-11-22 15:20:27 +0100
committerTanu Kaskinen <tanuk@iki.fi>2012-11-23 00:17:55 +0200
commit0bd428df04dfb5d280b9c90bffb40059b75a4428 (patch)
tree0434c19a6dadb2cc1309f37dcbd944e5b840121d
parentebf5f29bb32921e89ad7acb4c0d0d55ca4cf89a0 (diff)
bluetooth: Run the discovery hook only when necessary
This is a minor optimization too, but the main benefit is that it's makes the code easier to understand (I hope), since run_callback() won't be called at times when it's not needed.
-rw-r--r--src/modules/bluetooth/bluetooth-util.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 19e6b47a..14368da6 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -516,6 +516,7 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
pa_bluetooth_device *d;
pa_bluetooth_discovery *y;
int valid;
+ bool old_any_connected;
pa_assert_se(p = userdata);
pa_assert_se(y = p->context_data);
@@ -536,6 +537,9 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
pa_assert(p->call_data == d);
+ if (d != NULL)
+ old_any_connected = pa_bluetooth_device_any_audio_connected(d);
+
valid = dbus_message_get_type(r) == DBUS_MESSAGE_TYPE_ERROR ? -1 : 1;
if (dbus_message_is_method_call(p->message, "org.bluez.Device", "GetProperties"))
@@ -609,7 +613,7 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
}
finish:
- if (d != NULL)
+ if (d != NULL && old_any_connected != pa_bluetooth_device_any_audio_connected(d))
run_callback(d, FALSE);
finish2:
@@ -845,6 +849,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
if ((d = pa_hashmap_get(y->devices, dbus_message_get_path(m)))) {
DBusMessageIter arg_i;
+ bool old_any_connected = pa_bluetooth_device_any_audio_connected(d);
if (!dbus_message_iter_init(m, &arg_i)) {
pa_log("Failed to parse PropertyChanged: %s", err.message);
@@ -876,7 +881,8 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
goto fail;
}
- run_callback(d, FALSE);
+ if (old_any_connected != pa_bluetooth_device_any_audio_connected(d))
+ run_callback(d, FALSE);
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;