SHA256
1
0
forked from pool/pulseaudio
pulseaudio/0004-bluetooth-destruct-stream-only-if-it-is-not-already.patch

57 lines
2.0 KiB
Diff
Raw Normal View History

From 11688eca4b2beb7aa1adcd4aa9a3ee933f7385fb Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 8 Jan 2010 22:18:15 +0100
Subject: [PATCH] bluetooth: destruct stream only if it is not already destructed
https://bugzilla.redhat.com/show_bug.cgi?id=551842
---
src/modules/bluetooth/module-bluetooth-device.c | 28 ++++++++++++----------
1 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 19676df..2bbae41 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -823,23 +823,25 @@ static int stop_stream_fd(struct userdata *u) {
pa_assert(u);
pa_assert(u->rtpoll);
- pa_assert(u->rtpoll_item);
- pa_assert(u->stream_fd >= 0);
- pa_rtpoll_item_free(u->rtpoll_item);
- u->rtpoll_item = NULL;
+ if (u->rtpoll_item) {
+ pa_rtpoll_item_free(u->rtpoll_item);
+ u->rtpoll_item = NULL;
+ }
- memset(msg.buf, 0, BT_SUGGESTED_BUFFER_SIZE);
- msg.start_req.h.type = BT_REQUEST;
- msg.start_req.h.name = BT_STOP_STREAM;
- msg.start_req.h.length = sizeof(msg.start_req);
+ if (u->stream_fd >= 0) {
+ memset(msg.buf, 0, BT_SUGGESTED_BUFFER_SIZE);
+ msg.start_req.h.type = BT_REQUEST;
+ msg.start_req.h.name = BT_STOP_STREAM;
+ msg.start_req.h.length = sizeof(msg.start_req);
- if (service_send(u, &msg.start_req.h) < 0 ||
- service_expect(u, &msg.rsp, sizeof(msg), BT_STOP_STREAM, sizeof(msg.start_rsp)) < 0)
- r = -1;
+ if (service_send(u, &msg.start_req.h) < 0 ||
+ service_expect(u, &msg.rsp, sizeof(msg), BT_STOP_STREAM, sizeof(msg.start_rsp)) < 0)
+ r = -1;
- pa_close(u->stream_fd);
- u->stream_fd = -1;
+ pa_close(u->stream_fd);
+ u->stream_fd = -1;
+ }
if (u->read_smoother) {
pa_smoother_free(u->read_smoother);
--
1.6.0.2