Commit 5907656b authored by Max Kellermann's avatar Max Kellermann

output/wasapi: stop the IAudioClient while paused

Instead of generating silence, do nothing, don't waste CPU time.
parent 2ac2bd26
...@@ -366,7 +366,12 @@ try { ...@@ -366,7 +366,12 @@ try {
IAudioClient if we're paused */ IAudioClient if we're paused */
continue; continue;
break; /* stop the IAudioClient while paused; it will
be restarted as soon as we're asked to
resume playback */
Stop(client);
started = false;
continue;
case Status::PLAY: case Status::PLAY:
break; break;
...@@ -400,18 +405,12 @@ try { ...@@ -400,18 +405,12 @@ try {
} }
}; };
if (current_state == Status::PLAY) { const UINT32 write_size = write_in_frames * frame_size;
const UINT32 write_size = write_in_frames * frame_size; UINT32 new_data_size = 0;
UINT32 new_data_size = 0; new_data_size = spsc_buffer.pop(data, write_size);
new_data_size = spsc_buffer.pop(data, write_size); std::fill_n(data + new_data_size,
std::fill_n(data + new_data_size, write_size - new_data_size, 0);
write_size - new_data_size, 0); InterruptWaiter();
InterruptWaiter();
} else {
mode = AUDCLNT_BUFFERFLAGS_SILENT;
FormatDebug(wasapi_output_domain,
"Working thread paused");
}
} }
} catch (...) { } catch (...) {
error.ptr = std::current_exception(); error.ptr = std::current_exception();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment