[PATCH] dmime: IDirectMusicPerformance8 GetGraph return DMUS_E_NOT_FOUND if graph not set.

Michael Stefaniuc mstefani at winehq.org
Thu Mar 19 18:39:55 CDT 2020


Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

On 3/17/20 6:25 AM, Alistair Leslie-Hughes wrote:
> Just ensure the pointer and return value are correct from GetGraph.  I plan
> to extend these tests at a later date.  The tests also show that IDirectMusicPerformance8
> has a internal IDirectMusicGraph implementation, returned via QueryInterface.
> 
> Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
> ---
>  dlls/dmime/performance.c       | 23 +++++++++++++----------
>  dlls/dmime/tests/performance.c | 28 +++++++++++++++++++++++++++-
>  2 files changed, 40 insertions(+), 11 deletions(-)
> 
> diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
> index f535fe888f..8b38e12eb2 100644
> --- a/dlls/dmime/performance.c
> +++ b/dlls/dmime/performance.c
> @@ -549,18 +549,21 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_FreePMsg(IDirectMusicPerforma
>  }
>  
>  static HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph(IDirectMusicPerformance8 *iface,
> -        IDirectMusicGraph **ppGraph)
> +        IDirectMusicGraph **graph)
>  {
> -  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
> +    IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
>  
> -  FIXME("(%p, %p): to check\n", This, ppGraph);
> -  if (NULL != This->pToolGraph) {
> -    *ppGraph = This->pToolGraph;
> -    IDirectMusicGraph_AddRef(*ppGraph);
> -  } else {
> -    return E_FAIL;
> -  }
> -  return S_OK;
> +    TRACE("(%p, %p)\n", This, graph);
> +
> +    if (!graph)
> +        return E_POINTER;
> +
> +    *graph = This->pToolGraph;
> +    if (This->pToolGraph) {
> +        IDirectMusicGraph_AddRef(*graph);
> +    }
> +
> +    return *graph ? S_OK : DMUS_E_NOT_FOUND;
>  }
>  
>  static HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph(IDirectMusicPerformance8 *iface,
> diff --git a/dlls/dmime/tests/performance.c b/dlls/dmime/tests/performance.c
> index 825faabc9c..cec89ca80a 100644
> --- a/dlls/dmime/tests/performance.c
> +++ b/dlls/dmime/tests/performance.c
> @@ -345,7 +345,7 @@ static void test_pchannel(void)
>      unsigned int i;
>      HRESULT hr;
>  
> -    create_performance(&perf, NULL, NULL, FALSE);
> +    create_performance(&perf, NULL, NULL, TRUE);
>      hr = IDirectMusicPerformance8_Init(perf, NULL, NULL, NULL);
>      ok(hr == S_OK, "Init failed: %08x\n", hr);
>      hr = IDirectMusicPerformance8_PChannelInfo(perf, 0, &port, NULL, NULL);
> @@ -610,6 +610,31 @@ static void test_notification_type(void)
>      IDirectMusicPerformance8_Release(perf);
>  }
>  
> +static void test_performance_graph(void)
> +{
> +    HRESULT hr;
> +    IDirectMusicPerformance8 *perf;
> +    IDirectMusicGraph *graph = NULL, *graph2;
> +
> +    create_performance(&perf, NULL, NULL, FALSE);
> +    hr = IDirectMusicPerformance8_Init(perf, NULL, NULL, NULL);
> +    ok(hr == S_OK, "Init failed: %08x\n", hr);
> +
> +    hr = IDirectMusicPerformance8_GetGraph(perf, NULL);
> +    ok(hr == E_POINTER, "Failed: %08x\n", hr);
> +
> +    hr = IDirectMusicPerformance8_GetGraph(perf, &graph2);
> +    ok(hr == DMUS_E_NOT_FOUND, "Failed: %08x\n", hr);
> +    ok(graph2 == NULL, "unexpected pointer.\n");
> +
> +    hr = IDirectMusicPerformance8_QueryInterface(perf, &IID_IDirectMusicGraph, (void**)&graph);
> +    todo_wine ok(hr == S_OK, "Failed: %08x\n", hr);
> +
> +    if (graph)
> +        IDirectMusicGraph_Release(graph);
> +    destroy_performance(perf, NULL, NULL);
> +}
> +
>  START_TEST( performance )
>  {
>      HRESULT hr;
> @@ -630,6 +655,7 @@ START_TEST( performance )
>      test_createport();
>      test_pchannel();
>      test_notification_type();
> +    test_performance_graph();
>  
>      CoUninitialize();
>  }
> 




More information about the wine-devel mailing list