mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	query the sink volume outside of the loop because it might be quite expensive
This commit is contained in:
		
							parent
							
								
									34f6a516b2
								
							
						
					
					
						commit
						37b8c45e2b
					
				
					 1 changed files with 8 additions and 4 deletions
				
			
		| 
						 | 
					@ -154,7 +154,7 @@ static void subscribe_callback(pa_core *core, pa_subscription_event_type_t t, ui
 | 
				
			||||||
    pa_sink *sink;
 | 
					    pa_sink *sink;
 | 
				
			||||||
    pa_sink_input *i;
 | 
					    pa_sink_input *i;
 | 
				
			||||||
    uint32_t iidx;
 | 
					    uint32_t iidx;
 | 
				
			||||||
    pa_cvolume this_volume;
 | 
					    pa_cvolume sink_volume;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(core);
 | 
					    pa_assert(core);
 | 
				
			||||||
    pa_assert(u);
 | 
					    pa_assert(u);
 | 
				
			||||||
| 
						 | 
					@ -172,10 +172,14 @@ static void subscribe_callback(pa_core *core, pa_subscription_event_type_t t, ui
 | 
				
			||||||
    pa_log_debug("Sink volume changed");
 | 
					    pa_log_debug("Sink volume changed");
 | 
				
			||||||
    pa_log_debug("sink = %.2f", (double)pa_cvolume_avg(pa_sink_get_volume(sink, FALSE)) / PA_VOLUME_NORM);
 | 
					    pa_log_debug("sink = %.2f", (double)pa_cvolume_avg(pa_sink_get_volume(sink, FALSE)) / PA_VOLUME_NORM);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sink_volume = *pa_sink_get_volume(sink, FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = PA_SINK_INPUT(pa_idxset_first(sink->inputs, &iidx)); i; i = PA_SINK_INPUT(pa_idxset_next(sink->inputs, &iidx))) {
 | 
					    for (i = PA_SINK_INPUT(pa_idxset_first(sink->inputs, &iidx)); i; i = PA_SINK_INPUT(pa_idxset_next(sink->inputs, &iidx))) {
 | 
				
			||||||
        this_volume = *pa_sink_get_volume(sink, FALSE);
 | 
					        pa_cvolume si_volume;
 | 
				
			||||||
        pa_cvolume_remap(&this_volume, &sink->channel_map, &i->channel_map);
 | 
					
 | 
				
			||||||
        pa_sw_cvolume_multiply(&i->virtual_volume, &i->volume, &this_volume);
 | 
					        si_volume = sink_volume;
 | 
				
			||||||
 | 
					        pa_cvolume_remap(&si_volume, &sink->channel_map, &i->channel_map);
 | 
				
			||||||
 | 
					        pa_sw_cvolume_multiply(&i->virtual_volume, &i->volume, &si_volume);
 | 
				
			||||||
        pa_log_debug("sink input = { id = %d, flat = %.2f, true = %.2f }",
 | 
					        pa_log_debug("sink input = { id = %d, flat = %.2f, true = %.2f }",
 | 
				
			||||||
                     i->index,
 | 
					                     i->index,
 | 
				
			||||||
                     (double)pa_cvolume_avg(&i->virtual_volume)/PA_VOLUME_NORM,
 | 
					                     (double)pa_cvolume_avg(&i->virtual_volume)/PA_VOLUME_NORM,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue