Module: wine Branch: master Commit: 99449fc8d41c852aa60da710570e956578665783 URL: http://source.winehq.org/git/wine.git/?a=commit;h=99449fc8d41c852aa60da71057...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sat Jun 14 09:11:29 2014 +0400
wmp: Implement get_versionInfo().
---
dlls/wmp/Makefile.in | 2 +- dlls/wmp/player.c | 13 ++++++++++--- dlls/wmp/rsrc.rc | 2 ++ dlls/wmp/tests/Makefile.in | 2 +- dlls/wmp/tests/oleobj.c | 14 ++++++++++++++ 5 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/dlls/wmp/Makefile.in b/dlls/wmp/Makefile.in index a82cc36..71ca0e5 100644 --- a/dlls/wmp/Makefile.in +++ b/dlls/wmp/Makefile.in @@ -1,5 +1,5 @@ MODULE = wmp.dll -IMPORTS = user32 gdi32 +IMPORTS = user32 gdi32 oleaut32
C_SRCS = \ oleobj.c \ diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c index e8c349b..4c11c88 100644 --- a/dlls/wmp/player.c +++ b/dlls/wmp/player.c @@ -159,11 +159,18 @@ static HRESULT WINAPI WMPPlayer4_get_playlistCollection(IWMPPlayer4 *iface, IWMP return E_NOTIMPL; }
-static HRESULT WINAPI WMPPlayer4_get_versionInfo(IWMPPlayer4 *iface, BSTR *pbstrVersionInfo) +static HRESULT WINAPI WMPPlayer4_get_versionInfo(IWMPPlayer4 *iface, BSTR *version) { + static const WCHAR versionW[] = {'1','2','.','0','.','7','6','0','1','.','1','6','9','8','2',0}; WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface); - FIXME("(%p)->(%p)\n", This, pbstrVersionInfo); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, version); + + if (!version) + return E_POINTER; + + *version = SysAllocString(versionW); + return *version ? S_OK : E_OUTOFMEMORY; }
static HRESULT WINAPI WMPPlayer4_launchURL(IWMPPlayer4 *iface, BSTR url) diff --git a/dlls/wmp/rsrc.rc b/dlls/wmp/rsrc.rc index ced1a64..3585d12 100644 --- a/dlls/wmp/rsrc.rc +++ b/dlls/wmp/rsrc.rc @@ -23,6 +23,8 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL /* @makedep: wmp.rgs */ 2 WINE_REGISTRY wmp.rgs
+/* NOTE: when changing version value, update a string returned by + get_versionInfo() as well */ #define WINE_FILEDESCRIPTION_STR "Wine Media Player" #define WINE_FILENAME_STR "wmp.dll" #define WINE_FILEVERSION 12,0,7601,16982 diff --git a/dlls/wmp/tests/Makefile.in b/dlls/wmp/tests/Makefile.in index 52da0d7..465b878 100644 --- a/dlls/wmp/tests/Makefile.in +++ b/dlls/wmp/tests/Makefile.in @@ -1,4 +1,4 @@ TESTDLL = wmp.dll -IMPORTS = ole32 user32 +IMPORTS = ole32 oleaut32 user32
C_SRCS = oleobj.c diff --git a/dlls/wmp/tests/oleobj.c b/dlls/wmp/tests/oleobj.c index 31087f5..875fc77 100644 --- a/dlls/wmp/tests/oleobj.c +++ b/dlls/wmp/tests/oleobj.c @@ -864,12 +864,14 @@ static void test_wmp(void) IOleInPlaceObject *ipobj; IPersistStreamInit *psi; IOleObject *oleobj; + IWMPCore *wmpcore; DWORD misc_status; RECT pos = {0,0,100,100}; HWND hwnd; GUID guid; LONG ref; HRESULT hres; + BSTR str;
hres = CoCreateInstance(&CLSID_WindowsMediaPlayer, NULL, CLSCTX_INPROC_SERVER, &IID_IOleObject, (void**)&oleobj); if(hres == REGDB_E_CLASSNOTREG) { @@ -878,6 +880,18 @@ static void test_wmp(void) } ok(hres == S_OK, "Coult not create CLSID_WindowsMediaPlayer instance: %08x\n", hres);
+ hres = IOleObject_QueryInterface(oleobj, &IID_IWMPCore, (void**)&wmpcore); + ok(hres == S_OK, "got 0x%08x\n", hres); + + hres = IWMPCore_get_versionInfo(wmpcore, NULL); + ok(hres == E_POINTER, "got 0x%08x\n", hres); + + hres = IWMPCore_get_versionInfo(wmpcore, &str); + ok(hres == S_OK, "got 0x%08x\n", hres); + SysFreeString(str); + + IWMPCore_Release(wmpcore); + hres = IOleObject_QueryInterface(oleobj, &IID_IProvideClassInfo2, (void**)&class_info); ok(hres == S_OK, "Could not get IProvideClassInfo2 iface: %08x\n", hres);