mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	core: Add an "internal" suspend cause
This lets us suspend devices from within the core for short periods without having to overload one of the existing suspend causes. https://bugs.freedesktop.org/show_bug.cgi?id=64118
This commit is contained in:
		
							parent
							
								
									8cc4e7786f
								
							
						
					
					
						commit
						ab37be46f6
					
				
					 3 changed files with 17 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -1380,6 +1380,8 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
 | 
			
		|||
/* Called from main thread */
 | 
			
		||||
pa_bool_t pa_sink_update_rate(pa_sink *s, uint32_t rate, pa_bool_t passthrough)
 | 
			
		||||
{
 | 
			
		||||
    pa_bool_t ret = FALSE;
 | 
			
		||||
 | 
			
		||||
    if (s->update_rate) {
 | 
			
		||||
        uint32_t desired_rate = rate;
 | 
			
		||||
        uint32_t default_rate = s->default_sample_rate;
 | 
			
		||||
| 
						 | 
				
			
			@ -1439,7 +1441,7 @@ pa_bool_t pa_sink_update_rate(pa_sink *s, uint32_t rate, pa_bool_t passthrough)
 | 
			
		|||
            return FALSE;
 | 
			
		||||
 | 
			
		||||
        pa_log_debug("Suspending sink %s due to changing the sample rate.", s->name);
 | 
			
		||||
        pa_sink_suspend(s, TRUE, PA_SUSPEND_IDLE); /* needed before rate update, will be resumed automatically */
 | 
			
		||||
        pa_sink_suspend(s, TRUE, PA_SUSPEND_INTERNAL);
 | 
			
		||||
 | 
			
		||||
        if (s->update_rate(s, desired_rate) == TRUE) {
 | 
			
		||||
            /* update monitor source as well */
 | 
			
		||||
| 
						 | 
				
			
			@ -1452,10 +1454,13 @@ pa_bool_t pa_sink_update_rate(pa_sink *s, uint32_t rate, pa_bool_t passthrough)
 | 
			
		|||
                    pa_sink_input_update_rate(i);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return TRUE;
 | 
			
		||||
            ret = TRUE;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pa_sink_suspend(s, FALSE, PA_SUSPEND_INTERNAL);
 | 
			
		||||
    }
 | 
			
		||||
    return FALSE;
 | 
			
		||||
 | 
			
		||||
    return ret ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Called from main thread */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue