output/wasapi: stop the IAudioClient while paused
Instead of generating silence, do nothing, don't waste CPU time.
This commit is contained in:
parent
2ac2bd26f8
commit
5907656bbb
@ -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 {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
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();
|
||||||
|
Loading…
Reference in New Issue
Block a user