On 12/03/18 23:34, Anton Romanov wrote:
static HRESULT WINAPI WMPPlayer4_get_openState(IWMPPlayer4 *iface, WMPOpenState *pwmpos) @@ -1357,16 +1366,53 @@ static HRESULT WINAPI WMPControls_get_isAvailable(IWMPControls *iface, BSTR bstr
static HRESULT WINAPI WMPControls_play(IWMPControls *iface) {
- HRESULT hres; WindowsMediaPlayer *This = impl_from_IWMPControls(iface);
- FIXME("(%p)\n", This);
- return E_NOTIMPL;
- WMPMedia *media;
- TRACE("(%p)\n", This);
- if (!This->wmpmedia) {
return NS_S_WMPCORE_COMMAND_NOT_AVAILABLE;- }
- media = impl_from_IWMPMedia(This->wmpmedia);
- if (!This->pFilterGraph) {
hres = CoCreateInstance(&CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,&IID_IGraphBuilder,(void **)&This->pFilterGraph);if (SUCCEEDED(hres))hres = IGraphBuilder_RenderFile(This->pFilterGraph, media->url, NULL);if (SUCCEEDED(hres))hres = IGraphBuilder_QueryInterface(This->pFilterGraph, &IID_IMediaControl,(void**)&This->media_control);- }
- hres = IMediaControl_Run(This->media_control);
This will crash if either of the above calls fail.
- if (hres == S_FALSE) {
OAFilterState fs;hres = IMediaControl_GetState(This->media_control, 1000, &fs);if (hres != S_OK || fs != State_Running) {hres = S_FALSE;}- }
1 second seems arbitrary, especially given that IWMPControls has no similar method to force a state change.
- return hres;
}
This function on the whole (and several others in the file) could use some spacing.