mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	alsa: only remove sources when they were added
This commit is contained in:
		
							parent
							
								
									b6f01542d8
								
							
						
					
					
						commit
						d8db090ac2
					
				
					 1 changed files with 14 additions and 10 deletions
				
			
		| 
						 | 
					@ -492,11 +492,13 @@ static int set_timeout(struct state *state, size_t extra)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct itimerspec ts;
 | 
						struct itimerspec ts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!state->slaved) {
 | 
				
			||||||
		calc_timeout(state->filled + extra, state->threshold, state->rate, &state->now, &ts.it_value);
 | 
							calc_timeout(state->filled + extra, state->threshold, state->rate, &state->now, &ts.it_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ts.it_interval.tv_sec = 0;
 | 
							ts.it_interval.tv_sec = 0;
 | 
				
			||||||
		ts.it_interval.tv_nsec = ((size_t)state->threshold * SPA_NSEC_PER_SEC) / state->rate;
 | 
							ts.it_interval.tv_nsec = ((size_t)state->threshold * SPA_NSEC_PER_SEC) / state->rate;
 | 
				
			||||||
		timerfd_settime(state->timerfd, TFD_TIMER_ABSTIME, &ts, NULL);
 | 
							timerfd_settime(state->timerfd, TFD_TIMER_ABSTIME, &ts, NULL);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -962,12 +964,14 @@ static int do_remove_source(struct spa_loop *loop,
 | 
				
			||||||
	struct state *state = user_data;
 | 
						struct state *state = user_data;
 | 
				
			||||||
	struct itimerspec ts;
 | 
						struct itimerspec ts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!state->slaved) {
 | 
				
			||||||
		spa_loop_remove_source(state->data_loop, &state->source);
 | 
							spa_loop_remove_source(state->data_loop, &state->source);
 | 
				
			||||||
		ts.it_value.tv_sec = 0;
 | 
							ts.it_value.tv_sec = 0;
 | 
				
			||||||
		ts.it_value.tv_nsec = 0;
 | 
							ts.it_value.tv_nsec = 0;
 | 
				
			||||||
		ts.it_interval.tv_sec = 0;
 | 
							ts.it_interval.tv_sec = 0;
 | 
				
			||||||
		ts.it_interval.tv_nsec = 0;
 | 
							ts.it_interval.tv_nsec = 0;
 | 
				
			||||||
		timerfd_settime(state->timerfd, 0, &ts, NULL);
 | 
							timerfd_settime(state->timerfd, 0, &ts, NULL);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue