[PATCH 0/1] MR11206: mmdevapi: Implement SAORS_Reset().
From: Paul Gofman <pgofman@codeweavers.com> --- dlls/mmdevapi/spatialaudio.c | 10 ++++++++-- dlls/mmdevapi/tests/spatialaudio.c | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/dlls/mmdevapi/spatialaudio.c b/dlls/mmdevapi/spatialaudio.c index 55f0c2d6772..864b33136e6 100644 --- a/dlls/mmdevapi/spatialaudio.c +++ b/dlls/mmdevapi/spatialaudio.c @@ -379,8 +379,14 @@ static HRESULT WINAPI SAORS_Stop(ISpatialAudioObjectRenderStream *iface) static HRESULT WINAPI SAORS_Reset(ISpatialAudioObjectRenderStream *iface) { SpatialAudioStreamImpl *This = impl_from_ISpatialAudioObjectRenderStream(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; + HRESULT hr; + + TRACE("(%p)->()\n", This); + + hr = IAudioClient_Reset(This->client); + if (hr == AUDCLNT_E_NOT_STOPPED) + return SPTLAUDCLNT_E_STREAM_NOT_STOPPED; + return hr; } static HRESULT WINAPI SAORS_BeginUpdatingAudioObjects(ISpatialAudioObjectRenderStream *iface, diff --git a/dlls/mmdevapi/tests/spatialaudio.c b/dlls/mmdevapi/tests/spatialaudio.c index 2a7fd041060..4055f860fb4 100644 --- a/dlls/mmdevapi/tests/spatialaudio.c +++ b/dlls/mmdevapi/tests/spatialaudio.c @@ -309,6 +309,9 @@ static void test_audio_object_buffers(void) hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas); ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08lx\n", hr); + hr = ISpatialAudioObjectRenderStream_Reset(sas); + ok(hr == S_OK, "got %#lx.\n", hr); + hr = ISpatialAudioClient_GetMaxFrameCount(sac, &format, &max_frame_count); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); frame_count = format.nSamplesPerSec / 100; /* 10ms */ @@ -459,6 +462,27 @@ static void test_audio_object_buffers(void) hr = ISpatialAudioObjectRenderStream_EndUpdatingAudioObjects(sas); ok(hr == S_OK, "Failed to end updating audio objects: 0x%08lx\n", hr); + hr = ISpatialAudioObjectRenderStream_Reset(sas); + ok(hr == SPTLAUDCLNT_E_STREAM_NOT_STOPPED, "got %#lx.\n", hr); + + hr = ISpatialAudioObjectRenderStream_Stop(sas); + ok(hr == S_OK, "got %#lx.\n", hr); + + hr = ISpatialAudioObjectRenderStream_Reset(sas); + ok(hr == S_OK, "got %#lx.\n", hr); + + hr = ISpatialAudioObjectRenderStream_BeginUpdatingAudioObjects(sas, &dyn_object_count, &frame_count); + ok(hr == S_OK, "got %#lx.\n", hr); + + hr = ISpatialAudioObjectRenderStream_Reset(sas); + todo_wine ok(hr == S_OK, "got %#lx.\n", hr); + + hr = ISpatialAudioObjectRenderStream_EndUpdatingAudioObjects(sas); + ok(hr == S_OK, "got %#lx.\n", hr); + + hr = ISpatialAudioObjectRenderStream_Reset(sas); + ok(hr == S_OK, "got %#lx.\n", hr); + for (i = 0; i < ARRAYSIZE(sao); i++) { ISpatialAudioObject_Release(sao[i]); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11206
That helps Dragon Quest Builders which otherwise looses audio after system suspend. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11206#note_143717
This merge request was approved by Huw Davies. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11206
participants (3)
-
Huw Davies (@huw) -
Paul Gofman -
Paul Gofman (@gofman)