Module: wine Branch: master Commit: 917d5eabe64f34bb3dcae1c65c02a93829f2174a URL: http://source.winehq.org/git/wine.git/?a=commit;h=917d5eabe64f34bb3dcae1c65c...
Author: Michael Stefaniuc mstefani@redhat.de Date: Wed Mar 12 22:58:17 2014 +0100
dmloader: None of the COM classes support aggregation.
---
dlls/dmloader/container.c | 3 ++- dlls/dmloader/dmloader_main.c | 18 +++++++++++------- dlls/dmloader/dmloader_private.h | 4 ++-- dlls/dmloader/loader.c | 4 ++-- 4 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/dlls/dmloader/container.c b/dlls/dmloader/container.c index 68ee573..871c8b0 100644 --- a/dlls/dmloader/container.c +++ b/dlls/dmloader/container.c @@ -909,7 +909,8 @@ static const IPersistStreamVtbl DirectMusicContainer_PersistStream_Vtbl = { };
/* for ClassFactory */ -HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) { +HRESULT WINAPI create_dmcontainer(REFIID lpcGUID, void **ppobj) +{ IDirectMusicContainerImpl* obj;
obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicContainerImpl)); diff --git a/dlls/dmloader/dmloader_main.c b/dlls/dmloader/dmloader_main.c index eaed633..38faa8e 100644 --- a/dlls/dmloader/dmloader_main.c +++ b/dlls/dmloader/dmloader_main.c @@ -27,7 +27,7 @@ LONG module_ref = 0;
typedef struct { IClassFactory IClassFactory_iface; - HRESULT WINAPI (*fnCreateInstance)(REFIID riid, void **ppv, IUnknown *pUnkOuter); + HRESULT WINAPI (*fnCreateInstance)(REFIID riid, void **ppv); } IClassFactoryImpl;
/****************************************************************** @@ -73,13 +73,18 @@ static ULONG WINAPI ClassFactory_Release(IClassFactory *iface) }
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, - REFIID riid, void **ppv) + REFIID riid, void **ret_iface) { IClassFactoryImpl *This = impl_from_IClassFactory(iface);
- TRACE ("(%p, %s, %p)\n", pUnkOuter, debugstr_dmguid(riid), ppv); + TRACE ("(%s, %p)\n", debugstr_dmguid(riid), ret_iface);
- return This->fnCreateInstance(riid, ppv, pUnkOuter); + if (pUnkOuter) { + *ret_iface = NULL; + return CLASS_E_NOAGGREGATION; + } + + return This->fnCreateInstance(riid, ret_iface); }
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock) @@ -102,9 +107,8 @@ static const IClassFactoryVtbl classfactory_vtbl = { ClassFactory_LockServer };
-static IClassFactoryImpl dm_loader_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicLoaderImpl}; -static IClassFactoryImpl dm_container_CF = {{&classfactory_vtbl}, - DMUSIC_CreateDirectMusicContainerImpl}; +static IClassFactoryImpl dm_loader_CF = {{&classfactory_vtbl}, create_dmloader}; +static IClassFactoryImpl dm_container_CF = {{&classfactory_vtbl}, create_dmcontainer};
/****************************************************************** * DllMain diff --git a/dlls/dmloader/dmloader_private.h b/dlls/dmloader/dmloader_private.h index e393080..f01acfc 100644 --- a/dlls/dmloader/dmloader_private.h +++ b/dlls/dmloader/dmloader_private.h @@ -65,8 +65,8 @@ typedef struct IDirectMusicLoaderGenericStream IDirectMusicLoaderGenericStream; /***************************************************************************** * Creation helpers */ -extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN; -extern HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN; +extern HRESULT WINAPI create_dmloader(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN; +extern HRESULT WINAPI create_dmcontainer(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN; extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID *ppobj) DECLSPEC_HIDDEN; extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID *ppobj) DECLSPEC_HIDDEN; extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderGenericStream (LPVOID *ppobj) DECLSPEC_HIDDEN; diff --git a/dlls/dmloader/loader.c b/dlls/dmloader/loader.c index 39f00a0..967b093 100644 --- a/dlls/dmloader/loader.c +++ b/dlls/dmloader/loader.c @@ -888,14 +888,14 @@ static HRESULT DMUSIC_GetDefaultGMPath (WCHAR wszPath[MAX_PATH]) { }
/* for ClassFactory */ -HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl(const GUID *lpcGUID, void **ppobj, IUnknown *pUnkOuter) +HRESULT WINAPI create_dmloader(REFIID lpcGUID, void **ppobj) { IDirectMusicLoaderImpl *obj; DMUS_OBJECTDESC Desc; LPWINE_LOADER_ENTRY pDefaultDLSEntry; struct list *pEntry;
- TRACE("(%s, %p, %p)\n", debugstr_dmguid(lpcGUID), ppobj, pUnkOuter); + TRACE("(%s, %p)\n", debugstr_dmguid(lpcGUID), ppobj); obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicLoaderImpl)); if (NULL == obj) { *ppobj = NULL;