From: Davide Beatrici git@davidebeatrici.dev
--- dlls/mmdevapi/client.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/mmdevapi/client.c b/dlls/mmdevapi/client.c index 0b849e47e3d..bb95e797502 100644 --- a/dlls/mmdevapi/client.c +++ b/dlls/mmdevapi/client.c @@ -47,6 +47,8 @@ extern HRESULT get_audio_session(const GUID *sessionguid, IMMDevice *device, UIN struct audio_session **out); extern struct audio_session_wrapper *session_wrapper_create(struct audio_client *client);
+static const REFERENCE_TIME def_period_cap = 100000; + static HANDLE main_loop_thread;
void main_loop_stop(void) @@ -122,7 +124,7 @@ static HRESULT adjust_timing(struct audio_client *This, TRACE("Device periods: %lu default and %lu minimum\n", (ULONG)def_period, (ULONG)min_period);
if (mode == AUDCLNT_SHAREMODE_SHARED) { - *period = def_period; + *period = max(def_period, def_period_cap); if (*duration < 3 * *period) *duration = 3 * *period; } else { @@ -762,6 +764,9 @@ static HRESULT WINAPI client_GetDevicePeriod(IAudioClient3 *iface, REFERENCE_TIM
wine_unix_call(get_device_period, ¶ms);
+ if (defperiod && *defperiod < def_period_cap) + *defperiod = def_period_cap; + return params.result; }