From: Anton Romanov Subject: [PATCH v2 3/7] wmp: add IWMPControls stub implementation Message-Id: <20180202060017.20828-4-theli.ua@gmail.com> Date: Thu, 1 Feb 2018 22:00:13 -0800 In-Reply-To: <20180202060017.20828-1-theli.ua@gmail.com> References: <20180202060017.20828-1-theli.ua@gmail.com> Signed-off-by: Anton Romanov --- dlls/wmp/player.c | 203 ++++++++++++++++++++++++++++++++++++++++++++++++- dlls/wmp/wmp_private.h | 1 + 2 files changed, 202 insertions(+), 2 deletions(-) diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c index c410d6ef8f..430f701539 100644 --- a/dlls/wmp/player.c +++ b/dlls/wmp/player.c @@ -29,6 +29,11 @@ static inline WindowsMediaPlayer *impl_from_IWMPPlayer4(IWMPPlayer4 *iface) return CONTAINING_RECORD(iface, WindowsMediaPlayer, IWMPPlayer4_iface); } +static inline WindowsMediaPlayer *impl_from_IWMPControls(IWMPControls *iface) +{ + return CONTAINING_RECORD(iface, WindowsMediaPlayer, IWMPControls_iface); +} + static HRESULT WINAPI WMPPlayer4_QueryInterface(IWMPPlayer4 *iface, REFIID riid, void **ppv) { WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); @@ -118,8 +123,12 @@ static HRESULT WINAPI WMPPlayer4_get_playState(IWMPPlayer4 *iface, WMPPlayState static HRESULT WINAPI WMPPlayer4_get_controls(IWMPPlayer4 *iface, IWMPControls **ppControl) { WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); - FIXME("(%p)->(%p)\n", This, ppControl); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, ppControl); + + IWMPSettings_AddRef(&This->IWMPSettings_iface); + *ppControl = &This->IWMPControls_iface; + return S_OK; } static HRESULT WINAPI WMPPlayer4_get_settings(IWMPPlayer4 *iface, IWMPSettings **ppSettings) @@ -667,9 +676,199 @@ void destroy_player(WindowsMediaPlayer* wmp) { heap_free(wmp); } +HRESULT WINAPI WMPControls_fastForward(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_fastReverse(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_get_currentItem(IWMPControls *iface, IWMPMedia **ppIWMPMedia) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%p)\n", This, ppIWMPMedia); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_get_currentMarker(IWMPControls *iface, LONG *plMarker) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%p)\n", This, plMarker); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_get_currentPosition(IWMPControls *iface, DOUBLE *pdCurrentPosition) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%p)\n", This, pdCurrentPosition); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_get_currentPositionString(IWMPControls *iface, BSTR *pbstrCurrentPosition) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%p)\n", This, pbstrCurrentPosition); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPControls_get_isAvailable(IWMPControls *iface, BSTR bstrItem, VARIANT_BOOL *pIsAvailable) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(bstrItem)); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_next(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_pause(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_play(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_playItem(IWMPControls *iface, IWMPMedia *pIWMPMedia) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%p)\n", This, pIWMPMedia); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_previous(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_put_currentItem(IWMPControls *iface, IWMPMedia *pIWMPMedia) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%p)\n", This, pIWMPMedia); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_put_currentMarker(IWMPControls *iface, LONG lMarker) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%d)\n", This, lMarker); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_put_currentPosition(IWMPControls *iface, DOUBLE dCurrentPosition) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%f)\n", This, dCurrentPosition); + return E_NOTIMPL; +} + +HRESULT WINAPI WMPControls_stop(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPControls_QueryInterface(IWMPControls *iface, REFIID riid, void **ppv) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + return IOleObject_QueryInterface(&This->IOleObject_iface, riid, ppv); +} + +static ULONG WINAPI WMPControls_AddRef(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + return IOleObject_AddRef(&This->IOleObject_iface); +} + +static ULONG WINAPI WMPControls_Release(IWMPControls *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + return IOleObject_Release(&This->IOleObject_iface); +} + +static HRESULT WINAPI WMPControls_GetTypeInfoCount(IWMPControls *iface, UINT *pctinfo) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%p)\n", This, pctinfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPControls_GetTypeInfo(IWMPControls *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%u %d %p)\n", This, iTInfo, lcid, ppTInfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPControls_GetIDsOfNames(IWMPControls *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%s %p %u %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPControls_Invoke(IWMPControls *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + WindowsMediaPlayer *This = impl_from_IWMPControls(iface); + FIXME("(%p)->(%d %s %d %x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), lcid, + wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + return E_NOTIMPL; +} + +static const IWMPControlsVtbl WMPControlsVtbl = { + WMPControls_QueryInterface, + WMPControls_AddRef, + WMPControls_Release, + WMPControls_GetTypeInfoCount, + WMPControls_GetTypeInfo, + WMPControls_GetIDsOfNames, + WMPControls_Invoke, + WMPControls_get_isAvailable, + WMPControls_play, + WMPControls_stop, + WMPControls_pause, + WMPControls_fastForward, + WMPControls_fastReverse, + WMPControls_get_currentPosition, + WMPControls_put_currentPosition, + WMPControls_get_currentPositionString, + WMPControls_next, + WMPControls_previous, + WMPControls_get_currentItem, + WMPControls_put_currentItem, + WMPControls_get_currentMarker, + WMPControls_put_currentMarker, + WMPControls_playItem, +}; + HRESULT init_player(WindowsMediaPlayer *wmp) { wmp->IWMPPlayer4_iface.lpVtbl = &WMPPlayer4Vtbl; wmp->IWMPSettings_iface.lpVtbl = &WMPSettingsVtbl; + wmp->IWMPControls_iface.lpVtbl = &WMPControlsVtbl; return S_OK; } diff --git a/dlls/wmp/wmp_private.h b/dlls/wmp/wmp_private.h index d599c5bc6b..003eef8015 100644 --- a/dlls/wmp/wmp_private.h +++ b/dlls/wmp/wmp_private.h @@ -43,6 +43,7 @@ struct WindowsMediaPlayer { IOleControl IOleControl_iface; IWMPPlayer4 IWMPPlayer4_iface; IWMPSettings IWMPSettings_iface; + IWMPControls IWMPControls_iface; LONG ref; -- 2.16.1