diff options
| -rw-r--r-- | src/modules/module-combine.c | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c index f230bda1..aec774ee 100644 --- a/src/modules/module-combine.c +++ b/src/modules/module-combine.c @@ -732,15 +732,18 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse      switch (code) { -        case PA_SINK_MESSAGE_SET_STATE: -            pa_atomic_store(&u->thread_info.running, PA_PTR_TO_UINT(data) == PA_SINK_RUNNING); +        case PA_SINK_MESSAGE_SET_STATE: { +            pa_bool_t running = (PA_PTR_TO_UINT(data) == PA_SINK_RUNNING); -            if (PA_PTR_TO_UINT(data) == PA_SINK_SUSPENDED) -                pa_smoother_pause(u->thread_info.smoother, pa_rtclock_now()); -            else +            pa_atomic_store(&u->thread_info.running, running); + +            if (running)                  pa_smoother_resume(u->thread_info.smoother, pa_rtclock_now(), TRUE); +            else +                pa_smoother_pause(u->thread_info.smoother, pa_rtclock_now());              break; +        }          case PA_SINK_MESSAGE_GET_LATENCY: {              pa_usec_t x, y, c, *delay = data; @@ -1160,7 +1163,7 @@ int pa__init(pa_module*m) {              TRUE,              10,              pa_rtclock_now(), -            FALSE); +            TRUE);      adjust_time_sec = DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC;      if (pa_modargs_get_value_u32(ma, "adjust_time", &adjust_time_sec) < 0) {  | 
