Michael Stefaniuc : dswave: DirectSoundWave doesn' t support COM aggregation.

Alexandre Julliard julliard at winehq.org
Fri Mar 14 15:39:29 CDT 2014


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Thu Mar 13 23:45:16 2014 +0100

dswave: DirectSoundWave doesn't support COM aggregation.

---

 dlls/dswave/dswave.c         |    3 ++-
 dlls/dswave/dswave_main.c    |   13 +++++++++----
 dlls/dswave/dswave_private.h |    2 +-
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/dlls/dswave/dswave.c b/dlls/dswave/dswave.c
index f6fbe07..d0850f7 100644
--- a/dlls/dswave/dswave.c
+++ b/dlls/dswave/dswave.c
@@ -723,7 +723,8 @@ static const IPersistStreamVtbl DirectMusicWave_PersistStream_Vtbl = {
 
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicWaveImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
+HRESULT WINAPI create_dswave(REFIID lpcGUID, void **ppobj)
+{
 	IDirectMusicWaveImpl* obj;
 	
 	obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicWaveImpl));
diff --git a/dlls/dswave/dswave_main.c b/dlls/dswave/dswave_main.c
index 36eb266..a9be90c 100644
--- a/dlls/dswave/dswave_main.c
+++ b/dlls/dswave/dswave_main.c
@@ -71,12 +71,17 @@ static ULONG WINAPI WaveCF_Release(IClassFactory * iface)
 	return 1; /* non-heap based object */
 }
 
-static HRESULT WINAPI WaveCF_CreateInstance(IClassFactory * iface, IUnknown *pOuter, REFIID riid,
-        void **ppobj)
+static HRESULT WINAPI WaveCF_CreateInstance(IClassFactory * iface, IUnknown *outer_unk, REFIID riid,
+        void **ret_iface)
 {
-	TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
+    TRACE ("(%p, %s, %p)\n", outer_unk, debugstr_dmguid(riid), ret_iface);
 
-	return DMUSIC_CreateDirectMusicWaveImpl (riid, ppobj, pOuter);
+    if (outer_unk) {
+        *ret_iface = NULL;
+        return CLASS_E_NOAGGREGATION;
+    }
+
+    return create_dswave(riid, ret_iface);
 }
 
 static HRESULT WINAPI WaveCF_LockServer(IClassFactory * iface, BOOL dolock)
diff --git a/dlls/dswave/dswave_private.h b/dlls/dswave/dswave_private.h
index 6f402d7..ae9e346 100644
--- a/dlls/dswave/dswave_private.h
+++ b/dlls/dswave/dswave_private.h
@@ -48,7 +48,7 @@ typedef struct IDirectMusicWaveImpl IDirectMusicWaveImpl;
 /*****************************************************************************
  * ClassFactory
  */
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicWaveImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI create_dswave(REFIID lpcGUID, void **ret_iface) DECLSPEC_HIDDEN;
 
 
 /*****************************************************************************




More information about the wine-cvs mailing list