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 {
IAudioClient if we're paused */
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:
break;
......@@ -400,18 +405,12 @@ try {
}
};
if (current_state == Status::PLAY) {
const UINT32 write_size = write_in_frames * frame_size;
UINT32 new_data_size = 0;
new_data_size = spsc_buffer.pop(data, write_size);
std::fill_n(data + new_data_size,
write_size - new_data_size, 0);
InterruptWaiter();
} else {
mode = AUDCLNT_BUFFERFLAGS_SILENT;
FormatDebug(wasapi_output_domain,
"Working thread paused");
}
const UINT32 write_size = write_in_frames * frame_size;
UINT32 new_data_size = 0;
new_data_size = spsc_buffer.pop(data, write_size);
std::fill_n(data + new_data_size,
write_size - new_data_size, 0);
InterruptWaiter();
}
} catch (...) {
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