Accepting request 698654 from Base:System

OBS-URL: https://build.opensuse.org/request/show/698654
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/bluez?expand=0&rev=161
This commit is contained in:
Dominique Leuenberger 2019-05-03 20:07:03 +00:00 committed by Git OBS Bridge
commit 5c86206ffd
3 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,77 @@
From 477ecca127c529611adbc53f08039cefaf86305d Mon Sep 17 00:00:00 2001
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date: Tue, 26 Jun 2018 13:37:33 +0300
Subject: [PATCH] policy: Add logic to connect a Sink
References: boo#1131772
Patch-mainline: 5.51
Git-commit: 477ecca127c529611adbc53f08039cefaf86305d
If HFP/HSP HS connects and the device also supports a Sink connect it
as well since some devices (e.g. Sony MW600) may not connect it
automatically.
Acked-by: Michal Suchanek <msuchanek@suse.de>
---
plugins/policy.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/plugins/policy.c b/plugins/policy.c
index 1f5a506a2c2f..de51e58b91dc 100644
--- a/plugins/policy.c
+++ b/plugins/policy.c
@@ -297,6 +297,42 @@ static void sink_cb(struct btd_service *service, btd_service_state_t old_state,
}
}
+static void hs_cb(struct btd_service *service, btd_service_state_t old_state,
+ btd_service_state_t new_state)
+{
+ struct btd_device *dev = btd_service_get_device(service);
+ struct policy_data *data;
+ struct btd_service *sink;
+
+ /* If the device supports Sink set a timer to connect it as well */
+ sink = btd_device_get_service(dev, A2DP_SINK_UUID);
+ if (sink == NULL)
+ return;
+
+ data = policy_get_data(dev);
+
+ switch (new_state) {
+ case BTD_SERVICE_STATE_UNAVAILABLE:
+ break;
+ case BTD_SERVICE_STATE_DISCONNECTED:
+ break;
+ case BTD_SERVICE_STATE_CONNECTING:
+ break;
+ case BTD_SERVICE_STATE_CONNECTED:
+ /* Check if service initiate the connection then proceed
+ * immediately otherwise set timer
+ */
+ if (old_state == BTD_SERVICE_STATE_CONNECTING)
+ policy_connect(data, sink);
+ else if (btd_service_get_state(sink) !=
+ BTD_SERVICE_STATE_CONNECTED)
+ policy_set_sink_timer(data);
+ break;
+ case BTD_SERVICE_STATE_DISCONNECTING:
+ break;
+ }
+}
+
static gboolean policy_connect_tg(gpointer user_data)
{
struct policy_data *data = user_data;
@@ -615,6 +651,9 @@ static void service_cb(struct btd_service *service,
controller_cb(service, old_state, new_state);
else if (g_str_equal(profile->remote_uuid, AVRCP_TARGET_UUID))
target_cb(service, old_state, new_state);
+ else if (g_str_equal(profile->remote_uuid, HFP_HS_UUID) ||
+ g_str_equal(profile->remote_uuid, HSP_HS_UUID))
+ hs_cb(service, old_state, new_state);
/*
* Return if the reconnection feature is not enabled (all
--
2.20.1

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Wed Apr 24 17:43:18 UTC 2019 - Michal Suchanek <msuchanek@suse.de>
- Connect Sink profile which HSP profile connects (boo#1131772).
- Add 0001-policy-Add-logic-to-connect-a-Sink.patch
-------------------------------------------------------------------
Mon Apr 8 14:14:21 UTC 2019 - Ludwig Nussel <lnussel@suse.com>

View File

@ -38,6 +38,8 @@ Patch4: bluez-5.45-disable-broken-tests.diff
Patch5: 0001-obexd-use-AM_LDFLAGS-for-linking.patch
# disable tests for bypass boo#1078285
Patch6: disable_some_obex_tests.patch
# PATCH-FIX-UPSTREAM: improve profile availability on some audio devices
Patch7: 0001-policy-Add-logic-to-connect-a-Sink.patch
# Upstream suggests to use btmon instead of hcidump and does not want those patches
# => PATCH-FIX-OPENSUSE for those two :-)
# fix some memory leak with malformed packet (reported upstream but not yet fixed)
@ -157,6 +159,7 @@ desktop specific applets like blueman or GNOME or KDE applets).
%ifarch ppc ppc64 ppc64le
%patch6 -p1
%endif
%patch7 -p1
%patch101 -p1
%patch102 -p1
mkdir dbus-apis