57 lines
2.0 KiB
Diff
57 lines
2.0 KiB
Diff
|
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
|
||
|
|