diff options
Diffstat (limited to 'src/pulsecore/source.c')
| -rw-r--r-- | src/pulsecore/source.c | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index edbbf017..f113e295 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -645,6 +645,37 @@ unsigned pa_source_used_by(pa_source *s) {      return ret - s->n_corked;  } +/* Called from main thread */ +unsigned pa_source_check_suspend(pa_source *s) { +    unsigned ret; +    pa_source_output *o; +    uint32_t idx; + +    pa_source_assert_ref(s); + +    if (!PA_SOURCE_IS_LINKED(s->state)) +        return 0; + +    ret = 0; + +    for (o = PA_SOURCE_OUTPUT(pa_idxset_first(s->outputs, &idx)); o; o = PA_SOURCE_OUTPUT(pa_idxset_next(s->outputs, &idx))) { +        pa_source_output_state_t st; + +        st = pa_source_output_get_state(o); +        pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(st)); + +        if (st == PA_SOURCE_OUTPUT_CORKED) +            continue; + +        if (o->flags & PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND) +            continue; + +        ret ++; +    } + +    return ret; +} +  /* Called from IO thread, except when it is not */  int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_t offset, pa_memchunk *chunk) {      pa_source *s = PA_SOURCE(object);  | 
