static void resume(struct device_info *d) { pa_assert(d); d->userdata->core->mainloop->time_restart(d->time_event, NULL); if (d->sink) { pa_log_debug("Sink %s becomes busy, resuming.", d->sink->name); pa_sink_suspend(d->sink, false, PA_SUSPEND_IDLE); } if (d->source) { pa_log_debug("Source %s becomes busy, resuming.", d->source->name); pa_source_suspend(d->source, false, PA_SUSPEND_IDLE); } }
static void timeout_cb(pa_mainloop_api*a, pa_time_event* e, const struct timeval *t, void *userdata) { struct device_info *d = userdata; pa_assert(d); d->userdata->core->mainloop->time_restart(d->time_event, NULL); if (d->sink && pa_sink_check_suspend(d->sink) <= 0 && !(d->sink->suspend_cause & PA_SUSPEND_IDLE)) { pa_log_info("Sink %s idle for too long, suspending ...", d->sink->name); pa_sink_suspend(d->sink, TRUE, PA_SUSPEND_IDLE); } if (d->source && pa_source_check_suspend(d->source) <= 0 && !(d->source->suspend_cause & PA_SUSPEND_IDLE)) { pa_log_info("Source %s idle for too long, suspending ...", d->source->name); pa_source_suspend(d->source, TRUE, PA_SUSPEND_IDLE); } }