Fix audio sync issue with fullscreen toggling

This commit is contained in:
Zoran Vuckovic 2017-04-28 22:58:06 +02:00
parent aed6fd8082
commit f3a55f1036

View File

@ -560,12 +560,13 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency,
AUDCLNT_BUFFERFLAGS_SILENT); AUDCLNT_BUFFERFLAGS_SILENT);
WASAPI_HR_CHECK(hr, "IAudioRenderClient::ReleaseBuffer", goto error); WASAPI_HR_CHECK(hr, "IAudioRenderClient::ReleaseBuffer", goto error);
/* TODO: remove next three lines after /* TODO: remove next four lines after
"Pause when menu activated" option and "Pause when menu activated" option and
fullscreen toggling are fixed */ fullscreen toggling are fixed */
hr = w->client->lpVtbl->Start(w->client); hr = w->client->lpVtbl->Start(w->client);
WASAPI_HR_CHECK(hr, "IAudioClient::Start", goto error); WASAPI_HR_CHECK(hr, "IAudioClient::Start", goto error);
w->running = true; w->running = true;
w->blocking = settings->bools.audio_sync;
return w; return w;
@ -723,7 +724,7 @@ static ssize_t wasapi_write(void *wh, const void *data, size_t size)
if (w->blocking) if (w->blocking)
{ {
for (writen = 0, ir = -1; writen < size && ir; writen += ir) for (writen = 0, ir = -1; writen < size; writen += ir)
{ {
if (w->exclusive) if (w->exclusive)
ir = wasapi_write_ex(w, data + writen, size - writen); ir = wasapi_write_ex(w, data + writen, size - writen);