summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/output/plugins/wasapi/WasapiOutputPlugin.cxx25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx
index 7092deb92..f393f8871 100644
--- a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx
+++ b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx
@@ -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();