Revert "WASAPI_WaitDevice: Check current padding before waiting on event"

This reverts commit 09fbb2a07d.

This was causing issues in CS2 and DOTA:
https://old.reddit.com/r/DotA2/comments/1d4bqe3/dota_2_sound_crackling_since_this_morning/
https://old.reddit.com/r/DotA2/comments/1d44udf/anyone_having_sound_issues_or_any_clue_how_to_fix/
This commit is contained in:
Sam Lantinga
2024-05-30 16:48:54 -07:00
parent e4518af377
commit 90beffdeb1

View File

@@ -465,22 +465,20 @@ static int WASAPI_WaitDevice(SDL_AudioDevice *device)
{ {
// WaitDevice does not hold the device lock, so check for recovery/disconnect details here. // WaitDevice does not hold the device lock, so check for recovery/disconnect details here.
while (RecoverWasapiIfLost(device) && device->hidden->client && device->hidden->event) { while (RecoverWasapiIfLost(device) && device->hidden->client && device->hidden->event) {
DWORD waitResult = WaitForSingleObjectEx(device->hidden->event, 200, FALSE);
if (waitResult == WAIT_OBJECT_0) {
const UINT32 maxpadding = device->sample_frames;
UINT32 padding = 0; UINT32 padding = 0;
if (!WasapiFailed(device, IAudioClient_GetCurrentPadding(device->hidden->client, &padding))) { if (!WasapiFailed(device, IAudioClient_GetCurrentPadding(device->hidden->client, &padding))) {
const UINT32 maxpadding = device->sample_frames; //SDL_Log("WASAPI EVENT! padding=%u maxpadding=%u", (unsigned int)padding, (unsigned int)maxpadding);*/
//SDL_Log("WASAPI %s EVENT! padding=%u maxpadding=%u", device->iscapture ? "CAPTURE" : "PLAYBACK", (unsigned int)padding, (unsigned int)maxpadding); if (device->iscapture && (padding > 0)) {
if (device->iscapture ? (padding > 0) : (padding < maxpadding)) { break;
} else if (!device->iscapture && (padding <= maxpadding)) {
break; break;
} }
} }
} else if (waitResult != WAIT_TIMEOUT) {
switch (WaitForSingleObjectEx(device->hidden->event, 200, FALSE)) { //SDL_Log("WASAPI FAILED EVENT!");*/
case WAIT_OBJECT_0:
case WAIT_TIMEOUT:
break;
default:
//SDL_Log("WASAPI FAILED EVENT!");
IAudioClient_Stop(device->hidden->client); IAudioClient_Stop(device->hidden->client);
return -1; return -1;
} }