From b0b6728cf1ce323aa0198473e5210c2ec442a788 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 19 Feb 2014 17:51:52 +0100 Subject: [PATCH] wmp: Added IWMPPlayer4 stub implementation. --- dlls/wmp/Makefile.in | 1 + dlls/wmp/oleobj.c | 26 +-- dlls/wmp/player.c | 406 +++++++++++++++++++++++++++++++++++++++++ dlls/wmp/wmp_private.h | 15 ++ 4 files changed, 436 insertions(+), 12 deletions(-) create mode 100644 dlls/wmp/player.c diff --git a/dlls/wmp/Makefile.in b/dlls/wmp/Makefile.in index 6db31eb4110..a4d07c17b83 100644 --- a/dlls/wmp/Makefile.in +++ b/dlls/wmp/Makefile.in @@ -2,6 +2,7 @@ MODULE = wmp.dll C_SRCS = \ oleobj.c \ + player.c \ wmp_main.c RC_SRCS = rsrc.rc diff --git a/dlls/wmp/oleobj.c b/dlls/wmp/oleobj.c index 26f338acdfa..a6daabbbd98 100644 --- a/dlls/wmp/oleobj.c +++ b/dlls/wmp/oleobj.c @@ -23,18 +23,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(wmp); -struct WindowsMediaPlayer { - IOleObject IOleObject_iface; - IProvideClassInfo2 IProvideClassInfo2_iface; - IPersistStreamInit IPersistStreamInit_iface; - IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless_iface; - IConnectionPointContainer IConnectionPointContainer_iface; - - LONG ref; - - IOleClientSite *client_site; -}; - static void release_client_site(WindowsMediaPlayer *This) { if(!This->client_site) @@ -83,6 +71,18 @@ static HRESULT WINAPI OleObject_QueryInterface(IOleObject *iface, REFIID riid, v }else if(IsEqualGUID(riid, &IID_IConnectionPointContainer)) { TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv); *ppv = &This->IConnectionPointContainer_iface; + }else if(IsEqualGUID(riid, &IID_IWMPCore)) { + TRACE("(%p)->(IID_IWMPCore %p)\n", This, ppv); + *ppv = &This->IWMPPlayer4_iface; + }else if(IsEqualGUID(riid, &IID_IWMPCore2)) { + TRACE("(%p)->(IID_IWMPCore2 %p)\n", This, ppv); + *ppv = &This->IWMPPlayer4_iface; + }else if(IsEqualGUID(riid, &IID_IWMPCore3)) { + TRACE("(%p)->(IID_IWMPCore3 %p)\n", This, ppv); + *ppv = &This->IWMPPlayer4_iface; + }else if(IsEqualGUID(riid, &IID_IWMPPlayer4)) { + TRACE("(%p)->(IID_IWMPPlayer4 %p)\n", This, ppv); + *ppv = &This->IWMPPlayer4_iface; }else { FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); *ppv = NULL; @@ -633,6 +633,8 @@ HRESULT WINAPI WMPFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, wmp->ref = 1; + init_player_ifaces(wmp); + hres = IOleObject_QueryInterface(&wmp->IOleObject_iface, riid, ppv); IOleObject_Release(&wmp->IOleObject_iface); return hres; diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c new file mode 100644 index 00000000000..9560047fdc5 --- /dev/null +++ b/dlls/wmp/player.c @@ -0,0 +1,406 @@ +/* + * Copyright 2014 Jacek Caban for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "wmp_private.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(wmp); + +static inline WindowsMediaPlayer *impl_from_IWMPPlayer4(IWMPPlayer4 *iface) +{ + return CONTAINING_RECORD(iface, WindowsMediaPlayer, IWMPPlayer4_iface); +} + +static HRESULT WINAPI WMPPlayer4_QueryInterface(IWMPPlayer4 *iface, REFIID riid, void **ppv) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + return IOleObject_QueryInterface(&This->IOleObject_iface, riid, ppv); +} + +static ULONG WINAPI WMPPlayer4_AddRef(IWMPPlayer4 *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + return IOleObject_AddRef(&This->IOleObject_iface); +} + +static ULONG WINAPI WMPPlayer4_Release(IWMPPlayer4 *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + return IOleObject_Release(&This->IOleObject_iface); +} + +static HRESULT WINAPI WMPPlayer4_GetTypeInfoCount(IWMPPlayer4 *iface, UINT *pctinfo) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pctinfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_GetTypeInfo(IWMPPlayer4 *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%u %d %p)\n", This, iTInfo, lcid, ppTInfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_GetIDsOfNames(IWMPPlayer4 *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%s %p %u %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_Invoke(IWMPPlayer4 *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(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 HRESULT WINAPI WMPPlayer4_close(IWMPPlayer4 *iface) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_URL(IWMPPlayer4 *iface, BSTR *pbstrURL) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pbstrURL); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_URL(IWMPPlayer4 *iface, BSTR url) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(url)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_openState(IWMPPlayer4 *iface, WMPOpenState *pwmpos) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pwmpos); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_playState(IWMPPlayer4 *iface, WMPPlayState *pwmpps) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pwmpps); + return E_NOTIMPL; +} + +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; +} + +static HRESULT WINAPI WMPPlayer4_get_settings(IWMPPlayer4 *iface, IWMPSettings **ppSettings) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppSettings); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_currentMedia(IWMPPlayer4 *iface, IWMPMedia **ppMedia) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppMedia); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_currentMedia(IWMPPlayer4 *iface, IWMPMedia *pMedia) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pMedia); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_mediaCollection(IWMPPlayer4 *iface, IWMPMediaCollection **ppMediaCollection) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppMediaCollection); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_playlistCollection(IWMPPlayer4 *iface, IWMPPlaylistCollection **ppPlaylistCollection) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppPlaylistCollection); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_versionInfo(IWMPPlayer4 *iface, BSTR *pbstrVersionInfo) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pbstrVersionInfo); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_launchURL(IWMPPlayer4 *iface, BSTR url) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(url)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_network(IWMPPlayer4 *iface, IWMPNetwork **ppQNI) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppQNI); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_currentPlaylist(IWMPPlayer4 *iface, IWMPPlaylist **ppPL) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppPL); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_currentPlaylist(IWMPPlayer4 *iface, IWMPPlaylist *pPL) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pPL); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_cdromCollection(IWMPPlayer4 *iface, IWMPCdromCollection **ppCdromCollection) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppCdromCollection); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_closedCaption(IWMPPlayer4 *iface, IWMPClosedCaption **ppClosedCaption) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppClosedCaption); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_isOnline(IWMPPlayer4 *iface, VARIANT_BOOL *pfOnline) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pfOnline); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_Error(IWMPPlayer4 *iface, IWMPError **ppError) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppError); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_Status(IWMPPlayer4 *iface, BSTR *pbstrStatus) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pbstrStatus); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_dvd(IWMPPlayer4 *iface, IWMPDVD **ppDVD) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppDVD); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_newPlaylist(IWMPPlayer4 *iface, BSTR name, BSTR url, IWMPPlaylist **ppPlaylist) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%s %s %p)\n", This, debugstr_w(name), debugstr_w(url), ppPlaylist); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_newMedia(IWMPPlayer4 *iface, BSTR url, IWMPMedia **ppMedia) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppMedia); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_enabled(IWMPPlayer4 *iface, VARIANT_BOOL *pbEnabled) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pbEnabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_enabled(IWMPPlayer4 *iface, VARIANT_BOOL enabled) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%x)\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_fullScreen(IWMPPlayer4 *iface, VARIANT_BOOL *pbFullScreen) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pbFullScreen); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_fullScreen(IWMPPlayer4 *iface, VARIANT_BOOL fullscreen) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%x)\n", This, fullscreen); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_enableContextMenu(IWMPPlayer4 *iface, VARIANT_BOOL *pbEnableContextMenu) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pbEnableContextMenu); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_enableContextMenu(IWMPPlayer4 *iface, VARIANT_BOOL enable) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%x)\n", This, enable); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_uiMode(IWMPPlayer4 *iface, BSTR mode) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(mode)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_uiMode(IWMPPlayer4 *iface, BSTR *pbstrMode) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pbstrMode); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_stretchToFit(IWMPPlayer4 *iface, VARIANT_BOOL *enabled) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_stretchToFit(IWMPPlayer4 *iface, VARIANT_BOOL enabled) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%x)\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_windowlessVideo(IWMPPlayer4 *iface, VARIANT_BOOL *enabled) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_put_windowlessVideo(IWMPPlayer4 *iface, VARIANT_BOOL enabled) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%x)\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_isRemote(IWMPPlayer4 *iface, VARIANT_BOOL *pvarfIsRemote) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, pvarfIsRemote); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_get_playerApplication(IWMPPlayer4 *iface, IWMPPlayerApplication **ppIWMPPlayerApplication) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%p)\n", This, ppIWMPPlayerApplication); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMPPlayer4_openPlayer(IWMPPlayer4 *iface, BSTR url) +{ + WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(url)); + return E_NOTIMPL; +} + +static IWMPPlayer4Vtbl WMPPlayer4Vtbl = { + WMPPlayer4_QueryInterface, + WMPPlayer4_AddRef, + WMPPlayer4_Release, + WMPPlayer4_GetTypeInfoCount, + WMPPlayer4_GetTypeInfo, + WMPPlayer4_GetIDsOfNames, + WMPPlayer4_Invoke, + WMPPlayer4_close, + WMPPlayer4_get_URL, + WMPPlayer4_put_URL, + WMPPlayer4_get_openState, + WMPPlayer4_get_playState, + WMPPlayer4_get_controls, + WMPPlayer4_get_settings, + WMPPlayer4_get_currentMedia, + WMPPlayer4_put_currentMedia, + WMPPlayer4_get_mediaCollection, + WMPPlayer4_get_playlistCollection, + WMPPlayer4_get_versionInfo, + WMPPlayer4_launchURL, + WMPPlayer4_get_network, + WMPPlayer4_get_currentPlaylist, + WMPPlayer4_put_currentPlaylist, + WMPPlayer4_get_cdromCollection, + WMPPlayer4_get_closedCaption, + WMPPlayer4_get_isOnline, + WMPPlayer4_get_Error, + WMPPlayer4_get_Status, + WMPPlayer4_get_dvd, + WMPPlayer4_newPlaylist, + WMPPlayer4_newMedia, + WMPPlayer4_get_enabled, + WMPPlayer4_put_enabled, + WMPPlayer4_get_fullScreen, + WMPPlayer4_put_fullScreen, + WMPPlayer4_get_enableContextMenu, + WMPPlayer4_put_enableContextMenu, + WMPPlayer4_put_uiMode, + WMPPlayer4_get_uiMode, + WMPPlayer4_get_stretchToFit, + WMPPlayer4_put_stretchToFit, + WMPPlayer4_get_windowlessVideo, + WMPPlayer4_put_windowlessVideo, + WMPPlayer4_get_isRemote, + WMPPlayer4_get_playerApplication, + WMPPlayer4_openPlayer +}; + +void init_player_ifaces(WindowsMediaPlayer *wmp) +{ + wmp->IWMPPlayer4_iface.lpVtbl = &WMPPlayer4Vtbl; +} diff --git a/dlls/wmp/wmp_private.h b/dlls/wmp/wmp_private.h index 68c3dd24cfd..8f1a85aba38 100644 --- a/dlls/wmp/wmp_private.h +++ b/dlls/wmp/wmp_private.h @@ -22,6 +22,21 @@ #include "ole2.h" #include "wmp.h" +struct WindowsMediaPlayer { + IOleObject IOleObject_iface; + IProvideClassInfo2 IProvideClassInfo2_iface; + IPersistStreamInit IPersistStreamInit_iface; + IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless_iface; + IConnectionPointContainer IConnectionPointContainer_iface; + IWMPPlayer4 IWMPPlayer4_iface; + + LONG ref; + + IOleClientSite *client_site; +}; + +void init_player_ifaces(WindowsMediaPlayer*) DECLSPEC_HIDDEN; + HRESULT WINAPI WMPFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; static inline void *heap_alloc(size_t len)