Alistair Leslie-Hughes : dmime: IDirectMusicPerformance8 GetGraph return DMUS_E_NOT_FOUND if graph not set.

Alexandre Julliard julliard at winehq.org
Fri Mar 20 17:08:20 CDT 2020


Module: wine
Branch: master
Commit: b075088ec58abc4cb7526c0e75abca62744c7bc0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b075088ec58abc4cb7526c0e75abca62744c7bc0

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Tue Mar 17 05:25:25 2020 +0000

dmime: IDirectMusicPerformance8 GetGraph return DMUS_E_NOT_FOUND if graph not set.

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>
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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-cvs mailing list