Gijs Vermeulen : wmp: Improve playlist creation.

Alexandre Julliard julliard at winehq.org
Mon Aug 5 14:58:35 CDT 2019


Module: wine
Branch: master
Commit: 649e294886ec452afd99d43b764f67680ebce2ac
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=649e294886ec452afd99d43b764f67680ebce2ac

Author: Gijs Vermeulen <gijsvrm at codeweavers.com>
Date:   Sat Aug  3 17:45:54 2019 +0200

wmp: Improve playlist creation.

Signed-off-by: Gijs Vermeulen <gijsvrm at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wmp/player.c       | 19 +++++++++++++++----
 dlls/wmp/tests/oleobj.c |  4 +---
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c
index de0f15b..9437124 100644
--- a/dlls/wmp/player.c
+++ b/dlls/wmp/player.c
@@ -286,11 +286,18 @@ static HRESULT WINAPI WMPPlayer4_get_network(IWMPPlayer4 *iface, IWMPNetwork **p
     return S_OK;
 }
 
-static HRESULT WINAPI WMPPlayer4_get_currentPlaylist(IWMPPlayer4 *iface, IWMPPlaylist **ppPL)
+static HRESULT WINAPI WMPPlayer4_get_currentPlaylist(IWMPPlayer4 *iface, IWMPPlaylist **playlist)
 {
     WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface);
-    FIXME("(%p)->(%p)\n", This, ppPL);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, playlist);
+
+    *playlist = NULL;
+
+    if (This->playlist == NULL)
+        return S_FALSE;
+
+    return create_playlist(This->playlist->name, This->playlist->url, playlist);
 }
 
 static HRESULT WINAPI WMPPlayer4_put_currentPlaylist(IWMPPlayer4 *iface, IWMPPlaylist *pPL)
@@ -2197,6 +2204,8 @@ void unregister_player_msg_class(void) {
 BOOL init_player(WindowsMediaPlayer *wmp)
 {
     IWMPPlaylist *playlist;
+    BSTR name;
+    static const WCHAR nameW[] = {'P','l','a','y','l','i','s','t','1',0};
 
     InitOnceExecuteOnce(&class_init_once, register_player_msg_class, NULL, NULL);
     wmp->msg_window = CreateWindowW( MAKEINTRESOURCEW(player_msg_class), NULL, 0, 0,
@@ -2216,10 +2225,12 @@ BOOL init_player(WindowsMediaPlayer *wmp)
     wmp->IWMPControls_iface.lpVtbl = &WMPControlsVtbl;
     wmp->IWMPNetwork_iface.lpVtbl = &WMPNetworkVtbl;
 
-    if (SUCCEEDED(create_playlist(NULL, NULL, &playlist)))
+    name = SysAllocString(nameW);
+    if (SUCCEEDED(create_playlist(name, NULL, &playlist)))
         wmp->playlist = unsafe_impl_from_IWMPPlaylist(playlist);
     else
         wmp->playlist = NULL;
+    SysFreeString(name);
 
     wmp->invoke_urls = VARIANT_TRUE;
     wmp->auto_start = VARIANT_TRUE;
diff --git a/dlls/wmp/tests/oleobj.c b/dlls/wmp/tests/oleobj.c
index dbd9e93..db466bf 100644
--- a/dlls/wmp/tests/oleobj.c
+++ b/dlls/wmp/tests/oleobj.c
@@ -945,12 +945,10 @@ static void test_wmp_ifaces(IOleObject *oleobj)
 
     playlist = NULL;
     hres = IWMPPlayer4_get_currentPlaylist(player4, &playlist);
-todo_wine {
     ok(hres == S_OK, "IWMPPlayer4_get_currentPlaylist failed: %08x\n", hres);
     ok(playlist != NULL, "playlist != NULL\n");
-}
 
-    if (playlist) IWMPPlaylist_Release(playlist);
+    IWMPPlaylist_Release(playlist);
 
     media = NULL;
     hres = IWMPPlayer4_QueryInterface(player4, &IID_IWMPMedia, (void**)&media);




More information about the wine-cvs mailing list