From: Tanu Kaskinen <[email protected]>
The new helper function makes it easier to check whether any audio
profiles are connected. That information is needed by the discovery
module for deciding whether a new device module should be loaded. The
device module should use this information too to unload itself at the
right time, but that's currently not implemented.
---
src/modules/bluetooth/bluetooth-util.c | 13 +++++++++++++
src/modules/bluetooth/bluetooth-util.h | 1 +
src/modules/bluetooth/module-bluetooth-discover.c | 5 +----
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/src/modules/bluetooth/bluetooth-util.c
b/src/modules/bluetooth/bluetooth-util.c
index 565bfce..b5064e9 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -1000,6 +1000,19 @@ pa_bluetooth_transport*
pa_bluetooth_device_get_transport(pa_bluetooth_device *d
return NULL;
}
+bool pa_bluetooth_device_any_audio_connected(const pa_bluetooth_device *d) {
+ pa_assert(d);
+
+ if (d->dead || !device_is_audio_ready(d))
+ return false;
+
+ /* Deliverately ignore audio_sink_state and headset_state since they are
reflected in audio_state */
+ return
+ d->audio_state >= PA_BT_AUDIO_STATE_CONNECTED ||
+ d->audio_source_state >= PA_BT_AUDIO_STATE_CONNECTED ||
+ d->hfgw_state >= PA_BT_AUDIO_STATE_CONNECTED;
+}
+
int pa_bluetooth_transport_acquire(pa_bluetooth_transport *t, const char
*accesstype, size_t *imtu, size_t *omtu) {
DBusMessage *m, *r;
DBusError err;
diff --git a/src/modules/bluetooth/bluetooth-util.h
b/src/modules/bluetooth/bluetooth-util.h
index 1ec9e8c..874baa0 100644
--- a/src/modules/bluetooth/bluetooth-util.h
+++ b/src/modules/bluetooth/bluetooth-util.h
@@ -144,6 +144,7 @@ pa_bluetooth_device*
pa_bluetooth_discovery_get_by_address(pa_bluetooth_discover
pa_bluetooth_transport*
pa_bluetooth_discovery_get_transport(pa_bluetooth_discovery *y, const char
*path);
pa_bluetooth_transport* pa_bluetooth_device_get_transport(pa_bluetooth_device
*d, enum profile profile);
+bool pa_bluetooth_device_any_audio_connected(const pa_bluetooth_device *d);
int pa_bluetooth_transport_acquire(pa_bluetooth_transport *t, const char
*accesstype, size_t *imtu, size_t *omtu);
void pa_bluetooth_transport_release(pa_bluetooth_transport *t, const char
*accesstype);
diff --git a/src/modules/bluetooth/module-bluetooth-discover.c
b/src/modules/bluetooth/module-bluetooth-discover.c
index aef9492..48d0bee 100644
--- a/src/modules/bluetooth/module-bluetooth-discover.c
+++ b/src/modules/bluetooth/module-bluetooth-discover.c
@@ -74,10 +74,7 @@ static pa_hook_result_t
load_module_for_device(pa_bluetooth_discovery *y, const
mi = pa_hashmap_get(u->hashmap, d->path);
- if (!d->dead &&
- (d->audio_state >= PA_BT_AUDIO_STATE_CONNECTED ||
- d->audio_source_state >= PA_BT_AUDIO_STATE_CONNECTED ||
- d->hfgw_state >= PA_BT_AUDIO_STATE_CONNECTED)) {
+ if (pa_bluetooth_device_any_audio_connected(d)) {
if (!mi) {
pa_module *m = NULL;
--
1.7.11.7
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss