mmdevapi: Implement Set/GetMute.

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Andrew Eikum 2016-03-09 12:41:28 -06:00 committed by Alexandre Julliard
parent 982d005da5
commit 620cfe7e79
2 changed files with 24 additions and 4 deletions

View file

@ -44,6 +44,7 @@ typedef struct AEVImpl {
IAudioEndpointVolumeEx IAudioEndpointVolumeEx_iface;
LONG ref;
float master_vol;
BOOL mute;
} AEVImpl;
static inline AEVImpl *impl_from_IAudioEndpointVolumeEx(IAudioEndpointVolumeEx *iface)
@ -197,18 +198,30 @@ static HRESULT WINAPI AEV_GetChannelVolumeLevelScalar(IAudioEndpointVolumeEx *if
static HRESULT WINAPI AEV_SetMute(IAudioEndpointVolumeEx *iface, BOOL mute, const GUID *ctx)
{
AEVImpl *This = impl_from_IAudioEndpointVolumeEx(iface);
HRESULT ret;
TRACE("(%p)->(%u,%s)\n", iface, mute, debugstr_guid(ctx));
FIXME("stub\n");
return E_NOTIMPL;
ret = This->mute == mute ? S_FALSE : S_OK;
This->mute = mute;
return ret;
}
static HRESULT WINAPI AEV_GetMute(IAudioEndpointVolumeEx *iface, BOOL *mute)
{
AEVImpl *This = impl_from_IAudioEndpointVolumeEx(iface);
TRACE("(%p)->(%p)\n", iface, mute);
if (!mute)
return E_POINTER;
FIXME("stub\n");
return E_NOTIMPL;
*mute = This->mute;
return S_OK;
}
static HRESULT WINAPI AEV_GetVolumeStepInfo(IAudioEndpointVolumeEx *iface, UINT *stepsize, UINT *stepcount)

View file

@ -2248,6 +2248,7 @@ static void test_endpointvolume(void)
HRESULT hr;
IAudioEndpointVolume *aev;
float mindb, maxdb, increment, volume;
BOOL mute;
hr = IMMDevice_Activate(dev, &IID_IAudioEndpointVolume,
CLSCTX_INPROC_SERVER, NULL, (void**)&aev);
@ -2271,6 +2272,12 @@ static void test_endpointvolume(void)
hr = IAudioEndpointVolume_SetMasterVolumeLevel(aev, volume, NULL);
ok(hr == S_OK, "SetMasterVolumeLevel failed: 0x%08x\n", hr);
hr = IAudioEndpointVolume_GetMute(aev, &mute);
ok(hr == S_OK, "GetMute failed: %08x\n", hr);
hr = IAudioEndpointVolume_SetMute(aev, mute, NULL);
ok(hr == S_OK || hr == S_FALSE, "SetMute failed: %08x\n", hr);
IAudioEndpointVolume_Release(aev);
}