wmp: Improve URL property handling.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
54ec72bc09
commit
27338bc4b5
|
@ -28,7 +28,7 @@ static ATOM player_msg_class;
|
||||||
static INIT_ONCE class_init_once;
|
static INIT_ONCE class_init_once;
|
||||||
static UINT WM_WMPEVENT;
|
static UINT WM_WMPEVENT;
|
||||||
static const WCHAR WMPmessageW[] = {'_', 'W', 'M', 'P', 'M','e','s','s','a','g','e',0};
|
static const WCHAR WMPmessageW[] = {'_', 'W', 'M', 'P', 'M','e','s','s','a','g','e',0};
|
||||||
|
static const WCHAR emptyW[] = {0};
|
||||||
|
|
||||||
static void update_state(WindowsMediaPlayer *wmp, LONG type, LONG state)
|
static void update_state(WindowsMediaPlayer *wmp, LONG type, LONG state)
|
||||||
{
|
{
|
||||||
|
@ -135,9 +135,8 @@ static HRESULT WINAPI WMPPlayer4_get_URL(IWMPPlayer4 *iface, BSTR *url)
|
||||||
|
|
||||||
TRACE("(%p)->(%p)\n", This, url);
|
TRACE("(%p)->(%p)\n", This, url);
|
||||||
|
|
||||||
if(This->media == NULL) {
|
if (!This->media)
|
||||||
return S_FALSE;
|
return return_bstr(emptyW, url);
|
||||||
}
|
|
||||||
|
|
||||||
return return_bstr(This->media->url, url);
|
return return_bstr(This->media->url, url);
|
||||||
}
|
}
|
||||||
|
@ -147,10 +146,8 @@ static HRESULT WINAPI WMPPlayer4_put_URL(IWMPPlayer4 *iface, BSTR url)
|
||||||
WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface);
|
WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface);
|
||||||
IWMPMedia *media;
|
IWMPMedia *media;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
TRACE("(%p)->(%s)\n", This, debugstr_w(url));
|
TRACE("(%p)->(%s)\n", This, debugstr_w(url));
|
||||||
if(url == NULL) {
|
|
||||||
return E_POINTER;
|
|
||||||
}
|
|
||||||
|
|
||||||
hres = create_media_from_url(url, 0.0, &media);
|
hres = create_media_from_url(url, 0.0, &media);
|
||||||
|
|
||||||
|
@ -161,9 +158,8 @@ static HRESULT WINAPI WMPPlayer4_put_URL(IWMPPlayer4 *iface, BSTR url)
|
||||||
}
|
}
|
||||||
if (SUCCEEDED(hres)) {
|
if (SUCCEEDED(hres)) {
|
||||||
update_state(This, DISPID_WMPCOREEVENT_PLAYSTATECHANGE, wmppsReady);
|
update_state(This, DISPID_WMPCOREEVENT_PLAYSTATECHANGE, wmppsReady);
|
||||||
if (This->auto_start == VARIANT_TRUE) {
|
if (This->auto_start == VARIANT_TRUE)
|
||||||
hres = IWMPControls_play(&This->IWMPControls_iface);
|
IWMPControls_play(&This->IWMPControls_iface);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return hres;
|
return hres;
|
||||||
|
@ -2025,7 +2021,6 @@ WMPMedia *unsafe_impl_from_IWMPMedia(IWMPMedia *iface)
|
||||||
|
|
||||||
HRESULT create_media_from_url(BSTR url, double duration, IWMPMedia **ppMedia)
|
HRESULT create_media_from_url(BSTR url, double duration, IWMPMedia **ppMedia)
|
||||||
{
|
{
|
||||||
static const WCHAR emptyW[] = {0};
|
|
||||||
WMPMedia *media;
|
WMPMedia *media;
|
||||||
|
|
||||||
media = heap_alloc_zero(sizeof(*media));
|
media = heap_alloc_zero(sizeof(*media));
|
||||||
|
|
|
@ -562,6 +562,54 @@ todo_wine
|
||||||
IWMPPlayer4_Release(player);
|
IWMPPlayer4_Release(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_player_url(void)
|
||||||
|
{
|
||||||
|
IWMPPlayer4 *player;
|
||||||
|
BSTR str, str2;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
hr = CoCreateInstance(&CLSID_WindowsMediaPlayer, NULL, CLSCTX_INPROC_SERVER, &IID_IWMPPlayer4, (void **)&player);
|
||||||
|
if (hr == REGDB_E_CLASSNOTREG)
|
||||||
|
{
|
||||||
|
win_skip("CLSID_WindowsMediaPlayer is not registered.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ok(hr == S_OK, "Failed to create media player instance, hr %#x.\n", hr);
|
||||||
|
|
||||||
|
hr = IWMPPlayer4_get_URL(player, &str);
|
||||||
|
ok(hr == S_OK, "Failed to get url, hr %#x.\n", hr);
|
||||||
|
ok(*str == 0, "Unexpected url %s.\n", wine_dbgstr_w(str));
|
||||||
|
SysFreeString(str);
|
||||||
|
|
||||||
|
str2 = SysAllocString(mp3file);
|
||||||
|
hr = IWMPPlayer4_put_URL(player, str2);
|
||||||
|
ok(hr == S_OK, "Failed to set url, hr %#x.\n", hr);
|
||||||
|
|
||||||
|
hr = IWMPPlayer4_put_URL(player, NULL);
|
||||||
|
ok(hr == S_OK, "Failed to set url, hr %#x.\n", hr);
|
||||||
|
hr = IWMPPlayer4_get_URL(player, &str);
|
||||||
|
ok(hr == S_OK, "Failed to set url, hr %#x.\n", hr);
|
||||||
|
ok(*str == 0, "Unexpected url, %s.\n", wine_dbgstr_w(str));
|
||||||
|
SysFreeString(str);
|
||||||
|
|
||||||
|
/* Empty url */
|
||||||
|
hr = IWMPPlayer4_put_URL(player, str2);
|
||||||
|
ok(hr == S_OK, "Failed to set url, hr %#x.\n", hr);
|
||||||
|
|
||||||
|
str = SysAllocStringLen(NULL, 0);
|
||||||
|
hr = IWMPPlayer4_put_URL(player, str);
|
||||||
|
ok(hr == S_OK, "Failed to set url, hr %#x.\n", hr);
|
||||||
|
SysFreeString(str);
|
||||||
|
|
||||||
|
hr = IWMPPlayer4_get_URL(player, &str);
|
||||||
|
ok(hr == S_OK, "Failed to set url, hr %#x.\n", hr);
|
||||||
|
ok(*str == 0, "Unexpected url, %s.\n", wine_dbgstr_w(str));
|
||||||
|
SysFreeString(str);
|
||||||
|
|
||||||
|
SysFreeString(str2);
|
||||||
|
IWMPPlayer4_Release(player);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(media)
|
START_TEST(media)
|
||||||
{
|
{
|
||||||
CoInitialize(NULL);
|
CoInitialize(NULL);
|
||||||
|
@ -571,6 +619,7 @@ START_TEST(media)
|
||||||
completed_event = CreateEventW(NULL, FALSE, FALSE, NULL);
|
completed_event = CreateEventW(NULL, FALSE, FALSE, NULL);
|
||||||
|
|
||||||
test_media_item();
|
test_media_item();
|
||||||
|
test_player_url();
|
||||||
if (test_wmp()) {
|
if (test_wmp()) {
|
||||||
test_completion_event();
|
test_completion_event();
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue