[PATCH v11 2/4] wmp: Add seeking and duration

Jacek Caban jacek at codeweavers.com
Fri Apr 13 13:04:19 CDT 2018


Hi Anton,

On 04/13/2018 07:55 AM, Anton Romanov wrote:
> Signed-off-by: Anton Romanov <theli.ua at gmail.com>
> ---
>  dlls/wmp/player.c      | 66 +++++++++++++++++++++++++++++++++++-------
>  dlls/wmp/tests/media.c | 33 +++++++++++++++++++++
>  dlls/wmp/wmp_private.h |  3 ++
>  3 files changed, 92 insertions(+), 10 deletions(-)
>
> diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c
> index f4ce62a447..bd7e2f7184 100644
> --- a/dlls/wmp/player.c
> +++ b/dlls/wmp/player.c
> @@ -1396,8 +1396,22 @@ static HRESULT WINAPI WMPControls_Invoke(IWMPControls *iface, DISPID dispIdMembe
>  static HRESULT WINAPI WMPControls_get_isAvailable(IWMPControls *iface, BSTR bstrItem, VARIANT_BOOL *pIsAvailable)
>  {
>      WindowsMediaPlayer *This = impl_from_IWMPControls(iface);
> -    FIXME("(%p)->(%s)\n", This, debugstr_w(bstrItem));
> -    return E_NOTIMPL;
> +    static const WCHAR currentPosition[] = {'c','u','r','r','e','n','t','P','o','s','i','t','i','o','n',0};
> +    TRACE("(%p)->(%s %p)\n", This, debugstr_w(bstrItem), pIsAvailable);
> +    *pIsAvailable = VARIANT_FALSE;

This is not needed, you set it anyway below.

> +    if (!This->filter_graph) {
> +        *pIsAvailable = VARIANT_FALSE;
> +    } else if (strcmpW(currentPosition, bstrItem) == 0) {
> +        DWORD capabilities;
> +        IMediaSeeking_GetCapabilities(This->media_seeking, &capabilities);
> +        *pIsAvailable = (capabilities & AM_SEEKING_CanSeekAbsolute) ?
> +            VARIANT_TRUE : VARIANT_FALSE;
> +    } else {
> +        FIXME("%s not implemented\n", debugstr_w(bstrItem));
> +        return E_NOTIMPL;
> +    }
> +
> +    return S_OK;
>  }

>  
>     CLEAR_CALLED(OPENSTATE, wmposMediaOpening);
>  
> +    hres = IWMPControls_get_isAvailable(controls, bstrcurrentPosition, &vbool);
> +    ok(hres == S_OK, "IWMPControls_get_isAvailable failed: %08x\n", hres);
> +    ok(vbool == VARIANT_TRUE, "unexpected value\n");
> +
> +    duration = 0.0;
> +    hres = IWMPControls_get_currentPosition(controls, &duration);
> +    ok(hres == S_OK, "IWMPControls_get_currentPosition failed: %08x\n", hres);
> +    ok((int)duration == 0, "unexpected value %f\n", duration);
> +
> +    hres = IWMPControls_put_currentPosition(controls, duration);
> +    ok(hres == S_OK, "IWMPControls_put_currentPosition failed: %08x\n", hres);

It would be more interesting to set currentPosition to something different.

> +
> +    hres = IWMPPlayer4_get_currentMedia(player4, &media);
> +    ok(hres == S_OK, "IWMPPlayer4_get_currentMedia failed: %08x\n", hres);
> +    hres = IWMPMedia_get_duration(media, &duration);
> +    ok(hres == S_OK, "IWMPMedia_get_duration failed: %08x\n", hres);
> +    ok(
> +            round(duration) == 60 ||
> +            broken(round(duration) == 30) ||
> +            broken(round(duration) == 57)
> +            , "unexpected value: %f\n", duration);


Indention looks weird here.


Thanks,
Jacek



More information about the wine-devel mailing list