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
	
	 Lennart Poettering
						Lennart Poettering