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:
parent
982d005da5
commit
620cfe7e79
@ -44,6 +44,7 @@ typedef struct AEVImpl {
|
|||||||
IAudioEndpointVolumeEx IAudioEndpointVolumeEx_iface;
|
IAudioEndpointVolumeEx IAudioEndpointVolumeEx_iface;
|
||||||
LONG ref;
|
LONG ref;
|
||||||
float master_vol;
|
float master_vol;
|
||||||
|
BOOL mute;
|
||||||
} AEVImpl;
|
} AEVImpl;
|
||||||
|
|
||||||
static inline AEVImpl *impl_from_IAudioEndpointVolumeEx(IAudioEndpointVolumeEx *iface)
|
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)
|
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));
|
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)
|
static HRESULT WINAPI AEV_GetMute(IAudioEndpointVolumeEx *iface, BOOL *mute)
|
||||||
{
|
{
|
||||||
|
AEVImpl *This = impl_from_IAudioEndpointVolumeEx(iface);
|
||||||
|
|
||||||
TRACE("(%p)->(%p)\n", iface, mute);
|
TRACE("(%p)->(%p)\n", iface, mute);
|
||||||
|
|
||||||
if (!mute)
|
if (!mute)
|
||||||
return E_POINTER;
|
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)
|
static HRESULT WINAPI AEV_GetVolumeStepInfo(IAudioEndpointVolumeEx *iface, UINT *stepsize, UINT *stepcount)
|
||||||
|
@ -2248,6 +2248,7 @@ static void test_endpointvolume(void)
|
|||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
IAudioEndpointVolume *aev;
|
IAudioEndpointVolume *aev;
|
||||||
float mindb, maxdb, increment, volume;
|
float mindb, maxdb, increment, volume;
|
||||||
|
BOOL mute;
|
||||||
|
|
||||||
hr = IMMDevice_Activate(dev, &IID_IAudioEndpointVolume,
|
hr = IMMDevice_Activate(dev, &IID_IAudioEndpointVolume,
|
||||||
CLSCTX_INPROC_SERVER, NULL, (void**)&aev);
|
CLSCTX_INPROC_SERVER, NULL, (void**)&aev);
|
||||||
@ -2271,6 +2272,12 @@ static void test_endpointvolume(void)
|
|||||||
hr = IAudioEndpointVolume_SetMasterVolumeLevel(aev, volume, NULL);
|
hr = IAudioEndpointVolume_SetMasterVolumeLevel(aev, volume, NULL);
|
||||||
ok(hr == S_OK, "SetMasterVolumeLevel failed: 0x%08x\n", hr);
|
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);
|
IAudioEndpointVolume_Release(aev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user