Module: wine Branch: master Commit: 2fe960537348416e57bad53a69863d5e20c812f7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2fe960537348416e57bad53a69...
Author: Michael Stefaniuc mstefani@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;
/*****************************************************************************