From: Davide Beatrici git@davidebeatrici.dev
--- dlls/mmdevapi/client.c | 55 ++++++++++++++++++++++++++++++++++ dlls/winepulse.drv/mmdevdrv.c | 56 +++++------------------------------ 2 files changed, 62 insertions(+), 49 deletions(-)
diff --git a/dlls/mmdevapi/client.c b/dlls/mmdevapi/client.c index d2d4939bc73..e30e459c6c5 100644 --- a/dlls/mmdevapi/client.c +++ b/dlls/mmdevapi/client.c @@ -196,6 +196,61 @@ const IAudioCaptureClientVtbl AudioCaptureClient_Vtbl = capture_GetNextPacketSize };
+HRESULT WINAPI client_Stop(IAudioClient3 *iface) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + struct stop_params params; + + TRACE("(%p)\n", This); + + if (!This->stream) + return AUDCLNT_E_NOT_INITIALIZED; + + params.stream = This->stream; + + WINE_UNIX_CALL(stop, ¶ms); + + return params.result; +} + +HRESULT WINAPI client_Reset(IAudioClient3 *iface) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + struct reset_params params; + + TRACE("(%p)\n", This); + + if (!This->stream) + return AUDCLNT_E_NOT_INITIALIZED; + + params.stream = This->stream; + + WINE_UNIX_CALL(reset, ¶ms); + + return params.result; +} + +HRESULT WINAPI client_SetEventHandle(IAudioClient3 *iface, HANDLE event) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + struct set_event_handle_params params; + + TRACE("(%p)->(%p)\n", This, event); + + if (!event) + return E_INVALIDARG; + + if (!This->stream) + return AUDCLNT_E_NOT_INITIALIZED; + + params.stream = This->stream; + params.event = event; + + WINE_UNIX_CALL(set_event_handle, ¶ms); + + return params.result; +} + HRESULT WINAPI client_GetService(IAudioClient3 *iface, REFIID riid, void **ppv) { struct audio_client *This = impl_from_IAudioClient3(iface); diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c index 19d4bd41c7a..64b399f2a2b 100644 --- a/dlls/winepulse.drv/mmdevdrv.c +++ b/dlls/winepulse.drv/mmdevdrv.c @@ -972,54 +972,12 @@ static HRESULT WINAPI AudioClient_Start(IAudioClient3 *iface) return S_OK; }
-static HRESULT WINAPI AudioClient_Stop(IAudioClient3 *iface) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct stop_params params; +extern HRESULT WINAPI client_Stop(IAudioClient3 *iface);
- TRACE("(%p)\n", This); +extern HRESULT WINAPI client_Reset(IAudioClient3 *iface);
- if (!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; - - params.stream = This->stream; - pulse_call(stop, ¶ms); - return params.result; -} - -static HRESULT WINAPI AudioClient_Reset(IAudioClient3 *iface) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct reset_params params; - - TRACE("(%p)\n", This); - - if (!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; - - params.stream = This->stream; - pulse_call(reset, ¶ms); - return params.result; -} - -static HRESULT WINAPI AudioClient_SetEventHandle(IAudioClient3 *iface, - HANDLE event) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct set_event_handle_params params; - - TRACE("(%p)->(%p)\n", This, event); - - if (!event) - return E_INVALIDARG; - if (!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; - - params.stream = This->stream; - params.event = event; - pulse_call(set_event_handle, ¶ms); - return params.result; -} +extern HRESULT WINAPI client_SetEventHandle(IAudioClient3 *iface, + HANDLE event);
extern HRESULT WINAPI client_GetService(IAudioClient3 *iface, REFIID riid, void **ppv); @@ -1058,9 +1016,9 @@ static const IAudioClient3Vtbl AudioClient3_Vtbl = AudioClient_GetMixFormat, AudioClient_GetDevicePeriod, AudioClient_Start, - AudioClient_Stop, - AudioClient_Reset, - AudioClient_SetEventHandle, + client_Stop, + client_Reset, + client_SetEventHandle, client_GetService, client_IsOffloadCapable, client_SetClientProperties,