Nikolay Sivov : dmscript: Implement GetClassID() for IDirectMusicTrack.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Apr 6 10:34:18 CDT 2015


Module: wine
Branch: master
Commit: 52251ac6da29c261501029c8868368c37840a69b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=52251ac6da29c261501029c8868368c37840a69b

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sat Apr  4 14:07:00 2015 +0300

dmscript: Implement GetClassID() for IDirectMusicTrack.

---

 dlls/dmscript/scripttrack.c    | 12 ++++++++++--
 dlls/dmscript/tests/dmscript.c |  8 ++++++--
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/dlls/dmscript/scripttrack.c b/dlls/dmscript/scripttrack.c
index ddae8b5..bc8e8ce 100644
--- a/dlls/dmscript/scripttrack.c
+++ b/dlls/dmscript/scripttrack.c
@@ -264,7 +264,15 @@ static ULONG WINAPI IPersistStreamImpl_Release(IPersistStream *iface)
 
 static HRESULT WINAPI IPersistStreamImpl_GetClassID(IPersistStream *iface, CLSID *pClassID)
 {
-	return E_NOTIMPL;
+    DirectMusicScriptTrack *This = impl_from_IPersistStream(iface);
+
+    TRACE("(%p, %p)\n", This, pClassID);
+
+    if (!pClassID)
+        return E_POINTER;
+
+    *pClassID = This->desc.guidClass;
+    return S_OK;
 }
 
 static HRESULT WINAPI IPersistStreamImpl_IsDirty(IPersistStream *iface)
@@ -319,7 +327,7 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicScriptTrack(REFIID riid, void **ret_iface
     track->IDirectMusicTrack8_iface.lpVtbl = &dmtrack8_vtbl;
     track->IPersistStream_iface.lpVtbl = &persist_vtbl;
     track->desc.dwSize = sizeof(track->desc);
-    track->desc.dwValidData |= DMUS_OBJ_CLASS;
+    track->desc.dwValidData = DMUS_OBJ_CLASS;
     track->desc.guidClass = CLSID_DirectMusicScriptTrack;
     track->ref = 1;
 
diff --git a/dlls/dmscript/tests/dmscript.c b/dlls/dmscript/tests/dmscript.c
index 59858d5..82e874c 100644
--- a/dlls/dmscript/tests/dmscript.c
+++ b/dlls/dmscript/tests/dmscript.c
@@ -217,9 +217,13 @@ static void test_scripttrack(void)
     /* IPersistStream */
     hr = IDirectMusicTrack_QueryInterface(dmt, &IID_IPersistStream, (void**)&ps);
     ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr);
+
+    hr = IPersistStream_GetClassID(ps, NULL);
+    ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
     hr = IPersistStream_GetClassID(ps, &class);
-    todo_wine ok(hr == S_OK, "IPersistStream_GetClassID failed: %08x\n", hr);
-    todo_wine ok(IsEqualGUID(&class, &CLSID_DirectMusicScriptTrack),
+    ok(hr == S_OK, "IPersistStream_GetClassID failed: %08x\n", hr);
+    ok(IsEqualGUID(&class, &CLSID_DirectMusicScriptTrack),
             "Expected class CLSID_DirectMusicScriptTrack got %s\n", wine_dbgstr_guid(&class));
 
     /* Unimplemented IPersistStream methods */




More information about the wine-cvs mailing list