From f9bda23e5628f69c31558512da74683ecf5c9331 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 24 Apr 2018 17:21:23 +0200 Subject: [PATCH] a2dp-sink: remove sources only once --- spa/plugins/bluez5/a2dp-sink.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/spa/plugins/bluez5/a2dp-sink.c b/spa/plugins/bluez5/a2dp-sink.c index 5d1cd1ecd..940eb71ef 100644 --- a/spa/plugins/bluez5/a2dp-sink.c +++ b/spa/plugins/bluez5/a2dp-sink.c @@ -612,7 +612,8 @@ static void a2dp_on_flush(struct spa_source *source) if ((source->rmask & SPA_IO_OUT) == 0) { spa_log_warn(this->log, "error %d", source->rmask); - spa_loop_remove_source(this->data_loop, &this->flush_source); + if (this->flush_source.loop) + spa_loop_remove_source(this->data_loop, &this->flush_source); this->source.mask = 0; spa_loop_update_source(this->data_loop, &this->source); return; @@ -812,13 +813,15 @@ static int do_remove_source(struct spa_loop *loop, struct impl *this = user_data; struct itimerspec ts; - spa_loop_remove_source(this->data_loop, &this->source); + if (this->source.loop) + spa_loop_remove_source(this->data_loop, &this->source); ts.it_value.tv_sec = 0; ts.it_value.tv_nsec = 0; ts.it_interval.tv_sec = 0; ts.it_interval.tv_nsec = 0; timerfd_settime(this->timerfd, 0, &ts, NULL); - spa_loop_remove_source(this->data_loop, &this->flush_source); + if (this->flush_source.loop) + spa_loop_remove_source(this->data_loop, &this->flush_source); return 0; }