wmp: IWMPSettings implement put/get volume.
Signed-off-by: Anton Romanov <theli.ua@gmail.com> Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6e2c611870
commit
5d26d0b2c8
|
@ -958,15 +958,27 @@ static HRESULT WINAPI WMPSettings_put_balance(IWMPSettings *iface, LONG v)
|
|||
static HRESULT WINAPI WMPSettings_get_volume(IWMPSettings *iface, LONG *p)
|
||||
{
|
||||
WindowsMediaPlayer *This = impl_from_IWMPSettings(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
if (!p)
|
||||
return E_POINTER;
|
||||
*p = This->volume;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WMPSettings_put_volume(IWMPSettings *iface, LONG v)
|
||||
{
|
||||
HRESULT hres;
|
||||
WindowsMediaPlayer *This = impl_from_IWMPSettings(iface);
|
||||
FIXME("(%p)->(%d)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
TRACE("(%p)->(%d)\n", This, v);
|
||||
This->volume = v;
|
||||
if (!This->filter_graph) {
|
||||
hres = S_OK;
|
||||
} else {
|
||||
/* IBasicAudio - [-10000, 0], wmp - [0, 100] */
|
||||
v = 10000 * v / 100 - 10000;
|
||||
hres = IBasicAudio_put_Volume(This->basic_audio, v);
|
||||
}
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WMPSettings_getMode(IWMPSettings *iface, BSTR mode, VARIANT_BOOL *p)
|
||||
|
@ -1484,6 +1496,10 @@ static HRESULT WINAPI WMPControls_play(IWMPControls *iface)
|
|||
IMediaEventEx_Release(media_event_ex);
|
||||
}
|
||||
}
|
||||
if (SUCCEEDED(hres))
|
||||
hres = IGraphBuilder_QueryInterface(This->filter_graph, &IID_IBasicAudio, (void**)&This->basic_audio);
|
||||
if (SUCCEEDED(hres))
|
||||
hres = IWMPSettings_put_volume(&This->IWMPSettings_iface, This->volume);
|
||||
}
|
||||
|
||||
update_state(This, DISPID_WMPCOREEVENT_PLAYSTATECHANGE, wmppsTransitioning);
|
||||
|
@ -1525,11 +1541,15 @@ static HRESULT WINAPI WMPControls_stop(IWMPControls *iface)
|
|||
if (This->media_seeking) {
|
||||
IMediaSeeking_Release(This->media_seeking);
|
||||
}
|
||||
if (This->basic_audio) {
|
||||
IBasicAudio_Release(This->basic_audio);
|
||||
}
|
||||
IGraphBuilder_Release(This->filter_graph);
|
||||
This->filter_graph = NULL;
|
||||
This->media_control = NULL;
|
||||
This->media_event = NULL;
|
||||
This->media_seeking = NULL;
|
||||
This->basic_audio = NULL;
|
||||
|
||||
update_state(This, DISPID_WMPCOREEVENT_OPENSTATECHANGE, wmposPlaylistOpenNoMedia);
|
||||
update_state(This, DISPID_WMPCOREEVENT_PLAYSTATECHANGE, wmppsStopped);
|
||||
|
@ -1983,6 +2003,7 @@ BOOL init_player(WindowsMediaPlayer *wmp)
|
|||
|
||||
wmp->invoke_urls = VARIANT_TRUE;
|
||||
wmp->auto_start = VARIANT_TRUE;
|
||||
wmp->volume = 100;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -338,7 +338,6 @@ static BOOL test_wmp(void)
|
|||
|
||||
hres = IWMPSettings_put_autoStart(settings, VARIANT_FALSE);
|
||||
ok(hres == S_OK, "Could not put autoStart in IWMPSettings: %08x\n", hres);
|
||||
IWMPSettings_Release(settings);
|
||||
|
||||
controls = NULL;
|
||||
hres = IWMPPlayer4_get_controls(player4, &controls);
|
||||
|
@ -352,6 +351,12 @@ static BOOL test_wmp(void)
|
|||
hres = IWMPControls_play(controls);
|
||||
ok(hres == NS_S_WMPCORE_COMMAND_NOT_AVAILABLE, "IWMPControls_play is available: %08x\n", hres);
|
||||
|
||||
hres = IWMPSettings_put_volume(settings, 36);
|
||||
ok(hres == S_OK, "IWMPSettings_put_volume failed: %08x\n", hres);
|
||||
hres = IWMPSettings_get_volume(settings, &progress);
|
||||
ok(hres == S_OK, "IWMPSettings_get_volume failed: %08x\n", hres);
|
||||
ok(progress == 36, "unexpected value: %d\n", progress);
|
||||
|
||||
filename = SysAllocString(load_resource(mp3file));
|
||||
|
||||
SET_EXPECT(OPENSTATE, wmposPlaylistChanging);
|
||||
|
@ -460,7 +465,17 @@ playback_skip:
|
|||
hres = IConnectionPoint_Unadvise(point, dw);
|
||||
ok(hres == S_OK, "Unadvise failed: %08x\n", hres);
|
||||
|
||||
hres = IWMPSettings_get_volume(settings, &progress);
|
||||
ok(hres == S_OK, "IWMPSettings_get_volume failed: %08x\n", hres);
|
||||
ok(progress == 36, "unexpected value: %d\n", progress);
|
||||
hres = IWMPSettings_put_volume(settings, 99);
|
||||
ok(hres == S_OK, "IWMPSettings_put_volume failed: %08x\n", hres);
|
||||
hres = IWMPSettings_get_volume(settings, &progress);
|
||||
ok(hres == S_OK, "IWMPSettings_get_volume failed: %08x\n", hres);
|
||||
ok(progress == 99, "unexpected value: %d\n", progress);
|
||||
|
||||
IConnectionPoint_Release(point);
|
||||
IWMPSettings_Release(settings);
|
||||
IWMPControls_Release(controls);
|
||||
IWMPPlayer4_Release(player4);
|
||||
IOleObject_Release(oleobj);
|
||||
|
|
|
@ -69,6 +69,7 @@ struct WindowsMediaPlayer {
|
|||
VARIANT_BOOL auto_start;
|
||||
VARIANT_BOOL invoke_urls;
|
||||
VARIANT_BOOL enable_error_dialogs;
|
||||
LONG volume;
|
||||
|
||||
ConnectionPoint *wmpocx;
|
||||
|
||||
|
@ -79,6 +80,7 @@ struct WindowsMediaPlayer {
|
|||
IMediaControl* media_control;
|
||||
IMediaEvent* media_event;
|
||||
IMediaSeeking* media_seeking;
|
||||
IBasicAudio* basic_audio;
|
||||
|
||||
/* Async event notification */
|
||||
HWND msg_window;
|
||||
|
|
Loading…
Reference in New Issue