mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
alsa: only remove sources when they were added
This commit is contained in:
parent
b6f01542d8
commit
d8db090ac2
1 changed files with 14 additions and 10 deletions
|
|
@ -492,11 +492,13 @@ static int set_timeout(struct state *state, size_t extra)
|
||||||
{
|
{
|
||||||
struct itimerspec ts;
|
struct itimerspec ts;
|
||||||
|
|
||||||
calc_timeout(state->filled + extra, state->threshold, state->rate, &state->now, &ts.it_value);
|
if (!state->slaved) {
|
||||||
|
calc_timeout(state->filled + extra, state->threshold, state->rate, &state->now, &ts.it_value);
|
||||||
|
|
||||||
ts.it_interval.tv_sec = 0;
|
ts.it_interval.tv_sec = 0;
|
||||||
ts.it_interval.tv_nsec = ((size_t)state->threshold * SPA_NSEC_PER_SEC) / state->rate;
|
ts.it_interval.tv_nsec = ((size_t)state->threshold * SPA_NSEC_PER_SEC) / state->rate;
|
||||||
timerfd_settime(state->timerfd, TFD_TIMER_ABSTIME, &ts, NULL);
|
timerfd_settime(state->timerfd, TFD_TIMER_ABSTIME, &ts, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -962,12 +964,14 @@ static int do_remove_source(struct spa_loop *loop,
|
||||||
struct state *state = user_data;
|
struct state *state = user_data;
|
||||||
struct itimerspec ts;
|
struct itimerspec ts;
|
||||||
|
|
||||||
spa_loop_remove_source(state->data_loop, &state->source);
|
if (!state->slaved) {
|
||||||
ts.it_value.tv_sec = 0;
|
spa_loop_remove_source(state->data_loop, &state->source);
|
||||||
ts.it_value.tv_nsec = 0;
|
ts.it_value.tv_sec = 0;
|
||||||
ts.it_interval.tv_sec = 0;
|
ts.it_value.tv_nsec = 0;
|
||||||
ts.it_interval.tv_nsec = 0;
|
ts.it_interval.tv_sec = 0;
|
||||||
timerfd_settime(state->timerfd, 0, &ts, NULL);
|
ts.it_interval.tv_nsec = 0;
|
||||||
|
timerfd_settime(state->timerfd, 0, &ts, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue