mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
core: split of FAIL_ON_SUSPEND into KILL_ON_SUSPEND and NO_CREATE_ON_SUSPEND
This commit is contained in:
parent
e53d2fc6b5
commit
e4db56bf07
8 changed files with 18 additions and 15 deletions
|
|
@ -482,7 +482,7 @@ char *pa_source_output_list_to_string(pa_core *c) {
|
|||
s,
|
||||
" index: %u\n"
|
||||
"\tdriver: <%s>\n"
|
||||
"\tflags: %s%s%s%s%s%s%s%s%s%s\n"
|
||||
"\tflags: %s%s%s%s%s%s%s%s%s%s%s\n"
|
||||
"\tstate: %s\n"
|
||||
"\tsource: %u <%s>\n"
|
||||
"\tcurrent latency: %0.2f ms\n"
|
||||
|
|
@ -501,7 +501,8 @@ char *pa_source_output_list_to_string(pa_core *c) {
|
|||
o->flags & PA_SOURCE_OUTPUT_FIX_RATE ? "FIX_RATE " : "",
|
||||
o->flags & PA_SOURCE_OUTPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "",
|
||||
o->flags & PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "",
|
||||
o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "",
|
||||
o->flags & PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_ON_SUSPEND " : "",
|
||||
o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "",
|
||||
state_table[pa_source_output_get_state(o)],
|
||||
o->source->index, o->source->name,
|
||||
(double) pa_source_output_get_latency(o, NULL) / PA_USEC_PER_MSEC,
|
||||
|
|
@ -564,7 +565,7 @@ char *pa_sink_input_list_to_string(pa_core *c) {
|
|||
s,
|
||||
" index: %u\n"
|
||||
"\tdriver: <%s>\n"
|
||||
"\tflags: %s%s%s%s%s%s%s%s%s%s\n"
|
||||
"\tflags: %s%s%s%s%s%s%s%s%s%s%s\n"
|
||||
"\tstate: %s\n"
|
||||
"\tsink: %u <%s>\n"
|
||||
"\tvolume: %s\n"
|
||||
|
|
@ -587,7 +588,8 @@ char *pa_sink_input_list_to_string(pa_core *c) {
|
|||
i->flags & PA_SINK_INPUT_FIX_RATE ? "FIX_RATE " : "",
|
||||
i->flags & PA_SINK_INPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "",
|
||||
i->flags & PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "",
|
||||
i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "",
|
||||
i->flags & PA_SINK_INPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_SUSPEND " : "",
|
||||
i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "",
|
||||
state_table[pa_sink_input_get_state(i)],
|
||||
i->sink->index, i->sink->name,
|
||||
pa_cvolume_snprint(cv, sizeof(cv), &v),
|
||||
|
|
|
|||
|
|
@ -1957,7 +1957,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
|
|||
(no_move ? PA_SINK_INPUT_DONT_MOVE : 0) |
|
||||
(variable_rate ? PA_SINK_INPUT_VARIABLE_RATE : 0) |
|
||||
(dont_inhibit_auto_suspend ? PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) |
|
||||
(fail_on_suspend ? PA_SINK_INPUT_FAIL_ON_SUSPEND : 0);
|
||||
(fail_on_suspend ? PA_SINK_INPUT_NO_CREATE_ON_SUSPEND|PA_SINK_INPUT_KILL_ON_SUSPEND : 0);
|
||||
|
||||
/* Only since protocol version 15 there's a seperate muted_set
|
||||
* flag. For older versions we synthesize it here */
|
||||
|
|
@ -2213,7 +2213,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
|
|||
(no_move ? PA_SOURCE_OUTPUT_DONT_MOVE : 0) |
|
||||
(variable_rate ? PA_SOURCE_OUTPUT_VARIABLE_RATE : 0) |
|
||||
(dont_inhibit_auto_suspend ? PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) |
|
||||
(fail_on_suspend ? PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND : 0);
|
||||
(fail_on_suspend ? PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND|PA_SOURCE_OUTPUT_KILL_ON_SUSPEND : 0);
|
||||
|
||||
s = record_stream_new(c, source, &ss, &map, peak_detect, &attr, flags, p, adjust_latency, direct_on_input, early_requests, &ret);
|
||||
pa_proplist_free(p);
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ int pa_sink_input_new(
|
|||
if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_INPUT_FIXATE], data)) < 0)
|
||||
return r;
|
||||
|
||||
if ((flags & PA_SINK_INPUT_FAIL_ON_SUSPEND) &&
|
||||
if ((flags & PA_SINK_INPUT_NO_CREATE_ON_SUSPEND) &&
|
||||
pa_sink_get_state(data->sink) == PA_SINK_SUSPENDED) {
|
||||
pa_log_warn("Failed to create sink input: sink is suspended.");
|
||||
return -PA_ERR_BADSTATE;
|
||||
|
|
|
|||
|
|
@ -58,7 +58,8 @@ typedef enum pa_sink_input_flags {
|
|||
PA_SINK_INPUT_FIX_RATE = 64,
|
||||
PA_SINK_INPUT_FIX_CHANNELS = 128,
|
||||
PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND = 256,
|
||||
PA_SINK_INPUT_FAIL_ON_SUSPEND = 512
|
||||
PA_SINK_INPUT_NO_CREATE_ON_SUSPEND = 512,
|
||||
PA_SINK_INPUT_KILL_ON_SUSPEND = 1024
|
||||
} pa_sink_input_flags_t;
|
||||
|
||||
struct pa_sink_input {
|
||||
|
|
|
|||
|
|
@ -398,9 +398,9 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
|
|||
|
||||
/* We're suspending or resuming, tell everyone about it */
|
||||
|
||||
for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx)))
|
||||
PA_IDXSET_FOREACH(i, s->inputs, idx)
|
||||
if (s->state == PA_SINK_SUSPENDED &&
|
||||
(i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND))
|
||||
(i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND))
|
||||
pa_sink_input_kill(i);
|
||||
else if (i->suspend)
|
||||
i->suspend(i, state == PA_SINK_SUSPENDED);
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ int pa_source_output_new(
|
|||
if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_FIXATE], data)) < 0)
|
||||
return r;
|
||||
|
||||
if ((flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND) &&
|
||||
if ((flags & PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND) &&
|
||||
pa_source_get_state(data->source) == PA_SOURCE_SUSPENDED) {
|
||||
pa_log("Failed to create source output: source is suspended.");
|
||||
return -PA_ERR_BADSTATE;
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ typedef enum pa_source_output_flags {
|
|||
PA_SOURCE_OUTPUT_FIX_RATE = 64,
|
||||
PA_SOURCE_OUTPUT_FIX_CHANNELS = 128,
|
||||
PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND = 256,
|
||||
PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND = 512
|
||||
PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND = 512,
|
||||
PA_SOURCE_OUTPUT_KILL_ON_SUSPEND = 1024
|
||||
} pa_source_output_flags_t;
|
||||
|
||||
struct pa_source_output {
|
||||
|
|
|
|||
|
|
@ -336,15 +336,14 @@ static int source_set_state(pa_source *s, pa_source_state_t state) {
|
|||
|
||||
/* We're suspending or resuming, tell everyone about it */
|
||||
|
||||
for (o = PA_SOURCE_OUTPUT(pa_idxset_first(s->outputs, &idx)); o; o = PA_SOURCE_OUTPUT(pa_idxset_next(s->outputs, &idx)))
|
||||
PA_IDXSET_FOREACH(o, s->outputs, idx)
|
||||
if (s->state == PA_SOURCE_SUSPENDED &&
|
||||
(o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND))
|
||||
(o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND))
|
||||
pa_source_output_kill(o);
|
||||
else if (o->suspend)
|
||||
o->suspend(o, state == PA_SOURCE_SUSPENDED);
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue