forked from Bananymous/banan-os
				
			AudioServer: Don't allow client to fully halt audio
This commit is contained in:
		
							parent
							
								
									74af4e9150
								
							
						
					
					
						commit
						b334259a07
					
				|  | @ -116,11 +116,14 @@ uint64_t AudioServer::update() | ||||||
| 	if (!anyone_playing) | 	if (!anyone_playing) | ||||||
| 		return 60'000; | 		return 60'000; | ||||||
| 
 | 
 | ||||||
| 	// FIXME: this works but if any client stops producing audio samples
 | 	const uint32_t sample_frames_per_10ms = m_sample_rate / 100; | ||||||
| 	//        the whole audio server halts
 | 	if (max_sample_frames_to_queue < sample_frames_per_10ms) | ||||||
| 	const uint32_t samples_per_10ms = m_sample_rate / 100; | 	{ | ||||||
| 	if (max_sample_frames_to_queue < samples_per_10ms) | 		const uint32_t sample_frames_sent = m_samples_sent / m_channels; | ||||||
| 		return 1; | 		if (sample_frames_sent >= sample_frames_per_10ms) | ||||||
|  | 			return 1; | ||||||
|  | 		max_sample_frames_to_queue = sample_frames_per_10ms; | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	for (auto& [_, buffer] : m_audio_buffers) | 	for (auto& [_, buffer] : m_audio_buffers) | ||||||
| 	{ | 	{ | ||||||
|  | @ -135,7 +138,7 @@ uint64_t AudioServer::update() | ||||||
| 			continue; | 			continue; | ||||||
| 
 | 
 | ||||||
| 		const size_t sample_frames_to_queue = BAN::Math::min<size_t>(max_sample_frames_to_queue, buffer_sample_frames_available); | 		const size_t sample_frames_to_queue = BAN::Math::min<size_t>(max_sample_frames_to_queue, buffer_sample_frames_available); | ||||||
| 		if (sample_frames_to_queue < samples_per_10ms) | 		if (sample_frames_to_queue < sample_frames_per_10ms) | ||||||
| 			continue; | 			continue; | ||||||
| 
 | 
 | ||||||
| 		while (m_samples.size() < queued_samples_end + sample_frames_to_queue * m_channels) | 		while (m_samples.size() < queued_samples_end + sample_frames_to_queue * m_channels) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue