From: Davide Beatrici git@davidebeatrici.dev
--- dlls/mmdevapi/audiosessionmanager.c | 7 +++++-- dlls/mmdevapi/main.c | 1 - dlls/mmdevapi/mmdevapi_private.h | 2 -- dlls/mmdevapi/session.c | 23 ++++++++++++++++++--- dlls/winepulse.drv/mmdevdrv.c | 29 --------------------------- dlls/winepulse.drv/winepulse.drv.spec | 1 - 6 files changed, 25 insertions(+), 38 deletions(-)
diff --git a/dlls/mmdevapi/audiosessionmanager.c b/dlls/mmdevapi/audiosessionmanager.c index 74368ea2be3..ba23634e54d 100644 --- a/dlls/mmdevapi/audiosessionmanager.c +++ b/dlls/mmdevapi/audiosessionmanager.c @@ -26,6 +26,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(mmdevapi);
+extern HRESULT get_audio_session_wrapper(const GUID *guid, IMMDevice *device, + struct audio_session_wrapper **out); + static CRITICAL_SECTION g_sessions_lock; static CRITICAL_SECTION_DEBUG g_sessions_lock_debug = { @@ -102,7 +105,7 @@ static HRESULT WINAPI ASM_GetAudioSessionControl(IAudioSessionManager2 *iface,
TRACE("(%p)->(%s, %lx, %p)\n", This, debugstr_guid(guid), flags, out);
- hr = drvs.pGetAudioSessionWrapper(guid, This->device, &wrapper); + hr = get_audio_session_wrapper(guid, This->device, &wrapper); if (FAILED(hr)) return hr;
@@ -121,7 +124,7 @@ static HRESULT WINAPI ASM_GetSimpleAudioVolume(IAudioSessionManager2 *iface,
TRACE("(%p)->(%s, %lx, %p)\n", This, debugstr_guid(guid), flags, out);
- hr = drvs.pGetAudioSessionWrapper(guid, This->device, &wrapper); + hr = get_audio_session_wrapper(guid, This->device, &wrapper); if (FAILED(hr)) return hr;
diff --git a/dlls/mmdevapi/main.c b/dlls/mmdevapi/main.c index d1006b9999c..bba2ad2cc49 100644 --- a/dlls/mmdevapi/main.c +++ b/dlls/mmdevapi/main.c @@ -100,7 +100,6 @@ static BOOL load_driver(const WCHAR *name, DriverFuncs *driver) if(!driver->p##n) { goto fail; } } while(0) LDFC(GetEndpointIDs); LDFC(GetAudioEndpoint); - LDFC(GetAudioSessionWrapper); #undef LDFC
/* optional - do not fail if not found */ diff --git a/dlls/mmdevapi/mmdevapi_private.h b/dlls/mmdevapi/mmdevapi_private.h index 1cd8412b6ea..6f267ee756f 100644 --- a/dlls/mmdevapi/mmdevapi_private.h +++ b/dlls/mmdevapi/mmdevapi_private.h @@ -49,8 +49,6 @@ typedef struct _DriverFuncs { GUID **guids, UINT *num, UINT *default_index); HRESULT (WINAPI *pGetAudioEndpoint)(void *key, IMMDevice *dev, IAudioClient **out); - HRESULT (WINAPI *pGetAudioSessionWrapper)(const GUID *guid, IMMDevice *device, - struct audio_session_wrapper **out); HRESULT (WINAPI *pGetPropValue)(GUID *guid, const PROPERTYKEY *prop, PROPVARIANT *out); } DriverFuncs; diff --git a/dlls/mmdevapi/session.c b/dlls/mmdevapi/session.c index 09b54222f51..a0bb49c3cdf 100644 --- a/dlls/mmdevapi/session.c +++ b/dlls/mmdevapi/session.c @@ -245,7 +245,7 @@ static HRESULT WINAPI control_SetDuckingPreference(IAudioSessionControl2 *iface, return S_OK; }
-const IAudioSessionControl2Vtbl AudioSessionControl2_Vtbl = +static const IAudioSessionControl2Vtbl AudioSessionControl2_Vtbl = { control_QueryInterface, control_AddRef, @@ -416,7 +416,7 @@ static HRESULT WINAPI channelvolume_GetAllVolumes(IChannelAudioVolume *iface, UI return S_OK; }
-const IChannelAudioVolumeVtbl ChannelAudioVolume_Vtbl = +static const IChannelAudioVolumeVtbl ChannelAudioVolume_Vtbl = { channelvolume_QueryInterface, channelvolume_AddRef, @@ -542,7 +542,7 @@ static HRESULT WINAPI simplevolume_GetMute(ISimpleAudioVolume *iface, BOOL *mute return S_OK; }
-const ISimpleAudioVolumeVtbl SimpleAudioVolume_Vtbl = +static const ISimpleAudioVolumeVtbl SimpleAudioVolume_Vtbl = { simplevolume_QueryInterface, simplevolume_AddRef, @@ -652,3 +652,20 @@ HRESULT get_audio_session(const GUID *guid, IMMDevice *device, UINT channels,
return S_OK; } + +HRESULT get_audio_session_wrapper(const GUID *guid, IMMDevice *device, + struct audio_session_wrapper **out) +{ + struct audio_session *session; + + const HRESULT hr = get_audio_session(guid, device, 0, &session); + if (FAILED(hr)) + return hr; + + if (!(*out = session_wrapper_create(NULL))) + return E_OUTOFMEMORY; + + (*out)->session = session; + + return S_OK; +} diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c index 69658c4cfd1..8850bce44a7 100644 --- a/dlls/winepulse.drv/mmdevdrv.c +++ b/dlls/winepulse.drv/mmdevdrv.c @@ -120,16 +120,10 @@ BOOL WINAPI DllMain(HINSTANCE dll, DWORD reason, void *reserved) extern const IAudioClient3Vtbl AudioClient3_Vtbl; extern const IAudioRenderClientVtbl AudioRenderClient_Vtbl; extern const IAudioCaptureClientVtbl AudioCaptureClient_Vtbl; -extern const IAudioSessionControl2Vtbl AudioSessionControl2_Vtbl; -extern const ISimpleAudioVolumeVtbl SimpleAudioVolume_Vtbl; -extern const IChannelAudioVolumeVtbl ChannelAudioVolume_Vtbl; extern const IAudioClockVtbl AudioClock_Vtbl; extern const IAudioClock2Vtbl AudioClock2_Vtbl; extern const IAudioStreamVolumeVtbl AudioStreamVolume_Vtbl;
-extern struct audio_session_wrapper *session_wrapper_create( - struct audio_client *client) DECLSPEC_HIDDEN; - static void pulse_call(enum unix_funcs code, void *params) { NTSTATUS status; @@ -398,29 +392,6 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, IAudioClient return S_OK; }
-/* if channels == 0, then this will return or create a session with - * matching dataflow and GUID. otherwise, channels must also match */ -extern HRESULT get_audio_session(const GUID *sessionguid, - IMMDevice *device, UINT channels, AudioSession **out); - -HRESULT WINAPI AUDDRV_GetAudioSessionWrapper(const GUID *guid, IMMDevice *device, - AudioSessionWrapper **out) -{ - AudioSession *session; - - HRESULT hr = get_audio_session(guid, device, 0, &session); - if(FAILED(hr)) - return hr; - - *out = session_wrapper_create(NULL); - if(!*out) - return E_OUTOFMEMORY; - - (*out)->session = session; - - return S_OK; -} - HRESULT WINAPI AUDDRV_GetPropValue(GUID *guid, const PROPERTYKEY *prop, PROPVARIANT *out) { struct get_prop_value_params params; diff --git a/dlls/winepulse.drv/winepulse.drv.spec b/dlls/winepulse.drv/winepulse.drv.spec index 96cbd97bd68..94f8d4ef64c 100644 --- a/dlls/winepulse.drv/winepulse.drv.spec +++ b/dlls/winepulse.drv/winepulse.drv.spec @@ -1,7 +1,6 @@ # MMDevAPI driver functions @ stdcall -private GetEndpointIDs(long ptr ptr ptr ptr) AUDDRV_GetEndpointIDs @ stdcall -private GetAudioEndpoint(ptr ptr ptr) AUDDRV_GetAudioEndpoint -@ stdcall -private GetAudioSessionWrapper(ptr ptr ptr) AUDDRV_GetAudioSessionWrapper @ stdcall -private GetPropValue(ptr ptr ptr) AUDDRV_GetPropValue
# WinMM driver functions