diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c index 52c46e948..68250625c 100644 --- a/spa/plugins/alsa/alsa-pcm.c +++ b/spa/plugins/alsa/alsa-pcm.c @@ -2623,8 +2623,8 @@ static int do_reassign_follower(struct spa_loop *loop, void *user_data) { struct state *state = user_data; - set_timers(state); spa_dll_init(&state->dll); + set_timers(state); return 0; } @@ -2667,14 +2667,9 @@ static int do_remove_source(struct spa_loop *loop, void *user_data) { struct state *state = user_data; - struct itimerspec ts; spa_loop_remove_source(state->data_loop, &state->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; - spa_system_timerfd_settime(state->data_system, state->timerfd, 0, &ts, NULL); + set_timeout(state, 0); return 0; } diff --git a/spa/plugins/avb/avb-pcm.c b/spa/plugins/avb/avb-pcm.c index 92be4da59..ffe1c7489 100644 --- a/spa/plugins/avb/avb-pcm.c +++ b/spa/plugins/avb/avb-pcm.c @@ -1192,10 +1192,11 @@ static int do_remove_source(struct spa_loop *loop, struct state *state = user_data; spa_loop_remove_source(state->data_loop, &state->timer_source); + set_timeout(state, 0); - if (state->ports[0].direction == SPA_DIRECTION_OUTPUT) { + if (state->ports[0].direction == SPA_DIRECTION_OUTPUT) spa_loop_remove_source(state->data_loop, &state->sock_source); - } + return 0; } @@ -1209,7 +1210,6 @@ int spa_avb_pause(struct state *state) spa_loop_invoke(state->data_loop, do_remove_source, 0, NULL, 0, true, state); state->started = false; - set_timeout(state, 0); return 0; } diff --git a/spa/plugins/bluez5/media-sink.c b/spa/plugins/bluez5/media-sink.c index ec6cb9c8b..507a5f1de 100644 --- a/spa/plugins/bluez5/media-sink.c +++ b/spa/plugins/bluez5/media-sink.c @@ -1172,16 +1172,10 @@ static int do_remove_source(struct spa_loop *loop, void *user_data) { struct impl *this = user_data; - struct itimerspec ts; 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; - spa_system_timerfd_settime(this->data_system, this->timerfd, 0, &ts, NULL); - + set_timeout(this, 0); return 0; } @@ -1193,7 +1187,6 @@ static int do_remove_transport_source(struct spa_loop *loop, void *user_data) { struct impl *this = user_data; - struct itimerspec ts; this->transport_started = false; @@ -1202,11 +1195,7 @@ static int do_remove_transport_source(struct spa_loop *loop, if (this->flush_timer_source.loop) spa_loop_remove_source(this->data_loop, &this->flush_timer_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; - spa_system_timerfd_settime(this->data_system, this->flush_timerfd, 0, &ts, NULL); + enable_flush_timer(this, false); return 0; } diff --git a/spa/plugins/bluez5/media-source.c b/spa/plugins/bluez5/media-source.c index e45363476..696517ea5 100644 --- a/spa/plugins/bluez5/media-source.c +++ b/spa/plugins/bluez5/media-source.c @@ -783,17 +783,12 @@ static int do_remove_source(struct spa_loop *loop, void *user_data) { struct impl *this = user_data; - struct itimerspec ts; spa_log_debug(this->log, "%p: remove source", this); if (this->timer_source.loop) spa_loop_remove_source(this->data_loop, &this->timer_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; - spa_system_timerfd_settime(this->data_system, this->timerfd, 0, &ts, NULL); + set_timeout(this, 0); return 0; } diff --git a/spa/plugins/bluez5/midi-node.c b/spa/plugins/bluez5/midi-node.c index da080977c..635e28544 100644 --- a/spa/plugins/bluez5/midi-node.c +++ b/spa/plugins/bluez5/midi-node.c @@ -1110,17 +1110,10 @@ static int do_remove_source(struct spa_loop *loop, void *user_data) { struct impl *this = user_data; - struct itimerspec ts; if (this->timer_source.loop) spa_loop_remove_source(this->data_loop, &this->timer_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; - spa_system_timerfd_settime(this->data_system, this->timerfd, 0, &ts, NULL); - + set_timeout(this, 0); return 0; } @@ -1224,7 +1217,6 @@ static int do_reassign_follower(struct spa_loop *loop, void *user_data) { struct impl *this = user_data; - set_timers(this); return 0; } diff --git a/spa/plugins/bluez5/sco-sink.c b/spa/plugins/bluez5/sco-sink.c index 8856a179b..133b81821 100644 --- a/spa/plugins/bluez5/sco-sink.c +++ b/spa/plugins/bluez5/sco-sink.c @@ -777,9 +777,9 @@ static int do_remove_source(struct spa_loop *loop, { struct impl *this = user_data; - set_timeout(this, 0); if (this->source.loop) spa_loop_remove_source(this->data_loop, &this->source); + set_timeout(this, 0); return 0; } @@ -792,17 +792,12 @@ static int do_remove_transport_source(struct spa_loop *loop, void *user_data) { struct impl *this = user_data; - struct itimerspec ts; this->transport_started = false; if (this->flush_timer_source.loop) spa_loop_remove_source(this->data_loop, &this->flush_timer_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; - spa_system_timerfd_settime(this->data_system, this->flush_timerfd, 0, &ts, NULL); + enable_flush_timer(this, false); /* Drop buffered data in the ready queue. Ideally there shouldn't be any. */ drop_port_output(this); diff --git a/spa/plugins/bluez5/sco-source.c b/spa/plugins/bluez5/sco-source.c index 90b39aff6..b6573d81e 100644 --- a/spa/plugins/bluez5/sco-source.c +++ b/spa/plugins/bluez5/sco-source.c @@ -761,15 +761,10 @@ static int do_remove_source(struct spa_loop *loop, void *user_data) { struct impl *this = user_data; - struct itimerspec ts; if (this->timer_source.loop) spa_loop_remove_source(this->data_loop, &this->timer_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; - spa_system_timerfd_settime(this->data_system, this->timerfd, 0, &ts, NULL); + set_timeout(this, 0); return 0; }