dmloader: Make some functions static.
This commit is contained in:
parent
72f3e3d483
commit
02bfacff5a
|
@ -35,6 +35,46 @@ static ULONG WINAPI IDirectMusicContainerImpl_IPersistStream_AddRef (LPPERSISTST
|
|||
* IDirectMusicContainerImpl implementation
|
||||
*/
|
||||
/* IUnknown/IDirectMusicContainer part: */
|
||||
|
||||
static HRESULT DMUSIC_DestroyDirectMusicContainerImpl (LPDIRECTMUSICCONTAINER iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicContainerImpl, ContainerVtbl, iface);
|
||||
LPDIRECTMUSICLOADER pLoader;
|
||||
LPDIRECTMUSICGETLOADER pGetLoader;
|
||||
struct list *pEntry;
|
||||
LPWINE_CONTAINER_ENTRY pContainedObject;
|
||||
|
||||
/* get loader (from stream we loaded from) */
|
||||
TRACE(": getting loader\n");
|
||||
IStream_QueryInterface (This->pStream, &IID_IDirectMusicGetLoader, (LPVOID*)&pGetLoader);
|
||||
IDirectMusicGetLoader_GetLoader (pGetLoader, &pLoader);
|
||||
IDirectMusicGetLoader_Release (pGetLoader);
|
||||
|
||||
/* release objects from loader's cache (if appropriate) */
|
||||
TRACE(": releasing objects from loader's cache\n");
|
||||
LIST_FOR_EACH (pEntry, This->pContainedObjects) {
|
||||
pContainedObject = LIST_ENTRY (pEntry, WINE_CONTAINER_ENTRY, entry);
|
||||
/* my tests indicate that container releases objects *only*
|
||||
if they were loaded at its load-time (makes sense, it doesn't
|
||||
have pointers to objects otherwise); BTW: native container seems
|
||||
to ignore the flags (I won't) */
|
||||
if (pContainedObject->pObject && !(pContainedObject->dwFlags & DMUS_CONTAINED_OBJF_KEEP)) {
|
||||
/* flags say it shouldn't be kept in loader's cache */
|
||||
IDirectMusicLoader_ReleaseObject (pLoader, pContainedObject->pObject);
|
||||
}
|
||||
}
|
||||
IDirectMusicLoader_Release (pLoader);
|
||||
|
||||
/* release stream we loaded from */
|
||||
IStream_Release (This->pStream);
|
||||
|
||||
/* FIXME: release allocated entries */
|
||||
|
||||
/* decrease number of instances */
|
||||
InterlockedDecrement (&dwDirectMusicContainer);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IDirectMusicContainerImpl_IDirectMusicContainer_QueryInterface (LPDIRECTMUSICCONTAINER iface, REFIID riid, LPVOID *ppobj) {
|
||||
ICOM_THIS_MULTI(IDirectMusicContainerImpl, ContainerVtbl, iface);
|
||||
|
||||
|
@ -904,42 +944,3 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID* p
|
|||
|
||||
return IDirectMusicContainerImpl_IDirectMusicContainer_QueryInterface ((LPDIRECTMUSICCONTAINER)&obj->ContainerVtbl, lpcGUID, ppobj);
|
||||
}
|
||||
|
||||
HRESULT WINAPI DMUSIC_DestroyDirectMusicContainerImpl (LPDIRECTMUSICCONTAINER iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicContainerImpl, ContainerVtbl, iface);
|
||||
LPDIRECTMUSICLOADER pLoader;
|
||||
LPDIRECTMUSICGETLOADER pGetLoader;
|
||||
struct list *pEntry;
|
||||
LPWINE_CONTAINER_ENTRY pContainedObject;
|
||||
|
||||
/* get loader (from stream we loaded from) */
|
||||
TRACE(": getting loader\n");
|
||||
IStream_QueryInterface (This->pStream, &IID_IDirectMusicGetLoader, (LPVOID*)&pGetLoader);
|
||||
IDirectMusicGetLoader_GetLoader (pGetLoader, &pLoader);
|
||||
IDirectMusicGetLoader_Release (pGetLoader);
|
||||
|
||||
/* release objects from loader's cache (if appropriate) */
|
||||
TRACE(": releasing objects from loader's cache\n");
|
||||
LIST_FOR_EACH (pEntry, This->pContainedObjects) {
|
||||
pContainedObject = LIST_ENTRY (pEntry, WINE_CONTAINER_ENTRY, entry);
|
||||
/* my tests indicate that container releases objects *only*
|
||||
if they were loaded at its load-time (makes sense, it doesn't
|
||||
have pointers to objects otherwise); BTW: native container seems
|
||||
to ignore the flags (I won't) */
|
||||
if (pContainedObject->pObject && !(pContainedObject->dwFlags & DMUS_CONTAINED_OBJF_KEEP)) {
|
||||
/* flags say it shouldn't be kept in loader's cache */
|
||||
IDirectMusicLoader_ReleaseObject (pLoader, pContainedObject->pObject);
|
||||
}
|
||||
}
|
||||
IDirectMusicLoader_Release (pLoader);
|
||||
|
||||
/* release stream we loaded from */
|
||||
IStream_Release (This->pStream);
|
||||
|
||||
/* FIXME: release allocated entries */
|
||||
|
||||
/* decrease number of instances */
|
||||
InterlockedDecrement (&dwDirectMusicContainer);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -68,10 +68,7 @@ extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderCF (LPCGUID lpcGUID, LPVOID
|
|||
extern HRESULT WINAPI DMUSIC_CreateDirectMusicContainerCF (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
|
||||
|
||||
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
|
||||
extern HRESULT WINAPI DMUSIC_DestroyDirectMusicLoaderImpl (LPDIRECTMUSICLOADER8 iface);
|
||||
extern HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
|
||||
extern HRESULT WINAPI DMUSIC_DestroyDirectMusicContainerImpl(LPDIRECTMUSICCONTAINER iface);
|
||||
|
||||
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID *ppobj);
|
||||
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID *ppobj);
|
||||
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderGenericStream (LPVOID *ppobj);
|
||||
|
@ -174,7 +171,6 @@ struct IDirectMusicLoaderFileStream {
|
|||
|
||||
/* Custom: */
|
||||
extern HRESULT WINAPI IDirectMusicLoaderFileStream_Attach (LPSTREAM iface, LPCWSTR wzFile, LPDIRECTMUSICLOADER8 pLoader);
|
||||
extern void WINAPI IDirectMusicLoaderFileStream_Detach (LPSTREAM iface);
|
||||
|
||||
/*****************************************************************************
|
||||
* IDirectMusicLoaderResourceStream implementation structure
|
||||
|
@ -196,7 +192,6 @@ struct IDirectMusicLoaderResourceStream {
|
|||
|
||||
/* Custom: */
|
||||
extern HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach (LPSTREAM iface, LPBYTE pbMemData, LONGLONG llMemLength, LONGLONG llPos, LPDIRECTMUSICLOADER8 pLoader);
|
||||
extern void WINAPI IDirectMusicLoaderResourceStream_Detach (LPSTREAM iface);
|
||||
|
||||
/*****************************************************************************
|
||||
* IDirectMusicLoaderGenericStream implementation structure
|
||||
|
@ -215,7 +210,6 @@ struct IDirectMusicLoaderGenericStream {
|
|||
|
||||
/* Custom: */
|
||||
extern HRESULT WINAPI IDirectMusicLoaderGenericStream_Attach (LPSTREAM iface, LPSTREAM pStream, LPDIRECTMUSICLOADER8 pLoader);
|
||||
extern void WINAPI IDirectMusicLoaderGenericStream_Detach (LPSTREAM iface);
|
||||
|
||||
/*****************************************************************************
|
||||
* Misc.
|
||||
|
@ -226,12 +220,6 @@ typedef struct _WINE_CHUNK {
|
|||
DWORD dwSize; /* size of the chunk */
|
||||
} WINE_CHUNK, *LPWINE_CHUNK;
|
||||
|
||||
extern HRESULT WINAPI DMUSIC_GetDefaultGMPath (WCHAR wszPath[MAX_PATH]);
|
||||
extern HRESULT WINAPI DMUSIC_GetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pClassID, WCHAR* wszSearchPath, LPBOOL pbCache);
|
||||
extern HRESULT WINAPI DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface);
|
||||
extern HRESULT WINAPI DMUSIC_CopyDescriptor (LPDMUS_OBJECTDESC pDst, LPDMUS_OBJECTDESC pSrc);
|
||||
extern BOOL WINAPI DMUSIC_IsValidLoadableClass (REFCLSID pClassID);
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
#endif /* __WINE_DMLOADER_PRIVATE_H */
|
||||
|
|
|
@ -21,13 +21,53 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(dmloader);
|
||||
|
||||
static HRESULT DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface);
|
||||
static HRESULT DMUSIC_GetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pClassID, WCHAR* wszSearchPath, LPBOOL pbCache);
|
||||
static HRESULT DMUSIC_SetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pClassID, WCHAR* wszSearchPath, LPBOOL pbCache);
|
||||
|
||||
static HRESULT DMUSIC_CopyDescriptor (LPDMUS_OBJECTDESC pDst, LPDMUS_OBJECTDESC pSrc) {
|
||||
TRACE(": copy \n%s", debugstr_DMUS_OBJECTDESC(pSrc));
|
||||
/* copy field by field */
|
||||
if (pSrc->dwValidData & DMUS_OBJ_CLASS) pDst->guidClass = pSrc->guidClass;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_OBJECT) pDst->guidObject = pSrc->guidObject;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_DATE) pDst->ftDate = pSrc->ftDate;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_VERSION) pDst->vVersion = pSrc->vVersion;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_NAME) strcpyW (pDst->wszName, pSrc->wszName);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_CATEGORY) strcpyW (pDst->wszCategory, pSrc->wszCategory);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_FILENAME) strcpyW (pDst->wszFileName, pSrc->wszFileName);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_STREAM) IStream_Clone (pSrc->pStream, &pDst->pStream);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_MEMORY) {
|
||||
pDst->pbMemData = pSrc->pbMemData;
|
||||
pDst->llMemLength = pSrc->llMemLength;
|
||||
}
|
||||
/* set flags */
|
||||
pDst->dwValidData |= pSrc->dwValidData;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
static BOOL DMUSIC_IsValidLoadableClass (REFCLSID pClassID) {
|
||||
if (IsEqualCLSID(pClassID, &CLSID_DirectMusicAudioPathConfig) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicBand) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicContainer) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicCollection) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicChordMap) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicSegment) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicScript) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicSong) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicStyle) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicGraph) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectSoundWave) ||
|
||||
IsEqualCLSID(pClassID, &GUID_DirectMusicAllTypes))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* IDirectMusicLoaderImpl implementation
|
||||
*/
|
||||
/* IUnknown/IDirectMusicLoader(8) part: */
|
||||
static ULONG WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_AddRef (LPDIRECTMUSICLOADER8 iface);
|
||||
|
||||
static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface (LPDIRECTMUSICLOADER8 iface, REFIID riid, LPVOID *ppobj) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderImpl, LoaderVtbl, iface);
|
||||
|
@ -36,7 +76,7 @@ static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface (
|
|||
if (IsEqualIID (riid, &IID_IUnknown) ||
|
||||
IsEqualIID (riid, &IID_IDirectMusicLoader) ||
|
||||
IsEqualIID (riid, &IID_IDirectMusicLoader8)) {
|
||||
IDirectMusicLoaderImpl_IDirectMusicLoader_AddRef (iface);
|
||||
IDirectMusicLoader_AddRef (iface);
|
||||
*ppobj = This;
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -57,8 +97,16 @@ static ULONG WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_Release (LPDIRECTM
|
|||
DWORD dwRef = InterlockedDecrement (&This->dwRef);
|
||||
TRACE("(%p): ReleaseRef to %d\n", This, This->dwRef);
|
||||
if (dwRef == 0) {
|
||||
DMUSIC_DestroyDirectMusicLoaderImpl (iface);
|
||||
/* firstly, release the cache */
|
||||
IDirectMusicLoader8_ClearCache (iface, &GUID_DirectMusicAllTypes);
|
||||
/* FIXME: release all allocated entries */
|
||||
/* destroy critical section */
|
||||
/*This->CritSect.DebugInfo->Spare[0] = 0;
|
||||
DeleteCriticalSection (&This->CritSect); */
|
||||
HeapFree (GetProcessHeap(), 0, This);
|
||||
|
||||
/* decrease number of instances */
|
||||
InterlockedDecrement (&dwDirectMusicLoader);
|
||||
}
|
||||
|
||||
return dwRef;
|
||||
|
@ -788,6 +836,23 @@ static const IDirectMusicLoader8Vtbl DirectMusicLoader_Loader_Vtbl = {
|
|||
IDirectMusicLoaderImpl_IDirectMusicLoader_LoadObjectFromFile
|
||||
};
|
||||
|
||||
/* help function for DMUSIC_SetDefaultDLS */
|
||||
static HRESULT DMUSIC_GetDefaultGMPath (WCHAR wszPath[MAX_PATH]) {
|
||||
HKEY hkDM;
|
||||
DWORD returnType, sizeOfReturnBuffer = MAX_PATH;
|
||||
char szPath[MAX_PATH];
|
||||
|
||||
if ((RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\Microsoft\\DirectMusic" , 0, KEY_READ, &hkDM) != ERROR_SUCCESS) ||
|
||||
(RegQueryValueExA (hkDM, "GMFilePath", NULL, &returnType, (LPBYTE) szPath, &sizeOfReturnBuffer) != ERROR_SUCCESS)) {
|
||||
WARN(": registry entry missing\n" );
|
||||
return E_FAIL;
|
||||
}
|
||||
/* FIXME: Check return types to ensure we're interpreting data right */
|
||||
MultiByteToWideChar (CP_ACP, 0, szPath, -1, wszPath, MAX_PATH);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* for ClassFactory */
|
||||
HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) {
|
||||
IDirectMusicLoaderImpl *obj;
|
||||
|
@ -838,43 +903,8 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl (LPCGUID lpcGUID, LPVOID *ppob
|
|||
return IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface ((LPDIRECTMUSICLOADER8)obj, lpcGUID, ppobj);
|
||||
}
|
||||
|
||||
HRESULT WINAPI DMUSIC_DestroyDirectMusicLoaderImpl (LPDIRECTMUSICLOADER8 iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderImpl, LoaderVtbl, iface);
|
||||
|
||||
TRACE("(%p)\n", This);
|
||||
|
||||
/* firstly, release the cache */
|
||||
IDirectMusicLoader8_ClearCache (iface, &GUID_DirectMusicAllTypes);
|
||||
/* FIXME: release all allocated entries */
|
||||
/* destroy critical section */
|
||||
/*This->CritSect.DebugInfo->Spare[0] = 0;
|
||||
DeleteCriticalSection (&This->CritSect); */
|
||||
|
||||
/* decrease number of instances */
|
||||
InterlockedDecrement (&dwDirectMusicLoader);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* help function for DMUSIC_SetDefaultDLS */
|
||||
HRESULT WINAPI DMUSIC_GetDefaultGMPath (WCHAR wszPath[MAX_PATH]) {
|
||||
HKEY hkDM;
|
||||
DWORD returnType, sizeOfReturnBuffer = MAX_PATH;
|
||||
char szPath[MAX_PATH];
|
||||
|
||||
if ((RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\Microsoft\\DirectMusic" , 0, KEY_READ, &hkDM) != ERROR_SUCCESS) ||
|
||||
(RegQueryValueExA (hkDM, "GMFilePath", NULL, &returnType, (LPBYTE) szPath, &sizeOfReturnBuffer) != ERROR_SUCCESS)) {
|
||||
WARN(": registry entry missing\n" );
|
||||
return E_FAIL;
|
||||
}
|
||||
/* FIXME: Check return types to ensure we're interpreting data right */
|
||||
MultiByteToWideChar (CP_ACP, 0, szPath, -1, wszPath, MAX_PATH);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* help function for retrieval of search path and caching option for certain class */
|
||||
HRESULT WINAPI DMUSIC_GetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pClassID, WCHAR* wszSearchPath, LPBOOL pbCache) {
|
||||
static HRESULT DMUSIC_GetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pClassID, WCHAR* wszSearchPath, LPBOOL pbCache) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderImpl, LoaderVtbl, iface);
|
||||
struct list *pEntry;
|
||||
TRACE(": (%p, %s, %p, %p)\n", This, debugstr_dmguid(pClassID), wszSearchPath, pbCache);
|
||||
|
@ -916,7 +946,7 @@ static HRESULT DMUSIC_SetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pCl
|
|||
return result;
|
||||
}
|
||||
|
||||
HRESULT WINAPI DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface) {
|
||||
static HRESULT DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderImpl, LoaderVtbl, iface);
|
||||
|
||||
/* hard-coded list of classes */
|
||||
|
@ -950,41 +980,3 @@ HRESULT WINAPI DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface) {
|
|||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI DMUSIC_CopyDescriptor (LPDMUS_OBJECTDESC pDst, LPDMUS_OBJECTDESC pSrc) {
|
||||
TRACE(": copy \n%s", debugstr_DMUS_OBJECTDESC(pSrc));
|
||||
/* copy field by field */
|
||||
if (pSrc->dwValidData & DMUS_OBJ_CLASS) pDst->guidClass = pSrc->guidClass;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_OBJECT) pDst->guidObject = pSrc->guidObject;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_DATE) pDst->ftDate = pSrc->ftDate;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_VERSION) pDst->vVersion = pSrc->vVersion;
|
||||
if (pSrc->dwValidData & DMUS_OBJ_NAME) strcpyW (pDst->wszName, pSrc->wszName);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_CATEGORY) strcpyW (pDst->wszCategory, pSrc->wszCategory);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_FILENAME) strcpyW (pDst->wszFileName, pSrc->wszFileName);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_STREAM) IStream_Clone (pSrc->pStream, &pDst->pStream);
|
||||
if (pSrc->dwValidData & DMUS_OBJ_MEMORY) {
|
||||
pDst->pbMemData = pSrc->pbMemData;
|
||||
pDst->llMemLength = pSrc->llMemLength;
|
||||
}
|
||||
/* set flags */
|
||||
pDst->dwValidData |= pSrc->dwValidData;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
BOOL WINAPI DMUSIC_IsValidLoadableClass (REFCLSID pClassID) {
|
||||
if (IsEqualCLSID(pClassID, &CLSID_DirectMusicAudioPathConfig) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicBand) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicContainer) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicCollection) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicChordMap) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicSegment) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicScript) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicSong) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicStyle) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectMusicGraph) ||
|
||||
IsEqualCLSID(pClassID, &CLSID_DirectSoundWave) ||
|
||||
IsEqualCLSID(pClassID, &GUID_DirectMusicAllTypes))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -64,6 +64,14 @@ static ULONG WINAPI IDirectMusicLoaderGenericStream_IDirectMusicGetLoader_AddRef
|
|||
* IDirectMusicLoaderFileStream implementation
|
||||
*/
|
||||
/* Custom : */
|
||||
|
||||
static void IDirectMusicLoaderFileStream_Detach (LPSTREAM iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderFileStream, StreamVtbl, iface);
|
||||
TRACE("(%p)\n", This);
|
||||
if (This->hFile != INVALID_HANDLE_VALUE) CloseHandle(This->hFile);
|
||||
This->wzFileName[0] = '\0';
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicLoaderFileStream_Attach (LPSTREAM iface, LPCWSTR wzFile, LPDIRECTMUSICLOADER8 pLoader) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderFileStream, StreamVtbl, iface);
|
||||
TRACE("(%p, %s, %p)\n", This, debugstr_w(wzFile), pLoader);
|
||||
|
@ -80,15 +88,6 @@ HRESULT WINAPI IDirectMusicLoaderFileStream_Attach (LPSTREAM iface, LPCWSTR wzFi
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
void WINAPI IDirectMusicLoaderFileStream_Detach (LPSTREAM iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderFileStream, StreamVtbl, iface);
|
||||
TRACE("(%p)\n", This);
|
||||
if (This->hFile != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(This->hFile);
|
||||
}
|
||||
This->wzFileName[0] = '\0';
|
||||
}
|
||||
|
||||
|
||||
/* IUnknown/IStream part: */
|
||||
static HRESULT WINAPI IDirectMusicLoaderFileStream_IStream_QueryInterface (LPSTREAM iface, REFIID riid, void** ppobj) {
|
||||
|
@ -311,6 +310,15 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID* ppobj) {
|
|||
* IDirectMusicLoaderResourceStream implementation
|
||||
*/
|
||||
/* Custom : */
|
||||
|
||||
static void IDirectMusicLoaderResourceStream_Detach (LPSTREAM iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderResourceStream, StreamVtbl, iface);
|
||||
TRACE("(%p)\n", This);
|
||||
|
||||
This->pbMemData = NULL;
|
||||
This->llMemLength = 0;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach (LPSTREAM iface, LPBYTE pbMemData, LONGLONG llMemLength, LONGLONG llPos, LPDIRECTMUSICLOADER8 pLoader) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderResourceStream, StreamVtbl, iface);
|
||||
|
||||
|
@ -328,14 +336,6 @@ HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach (LPSTREAM iface, LPBYTE p
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
void WINAPI IDirectMusicLoaderResourceStream_Detach (LPSTREAM iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderResourceStream, StreamVtbl, iface);
|
||||
TRACE("(%p)\n", This);
|
||||
|
||||
This->pbMemData = NULL;
|
||||
This->llMemLength = 0;
|
||||
}
|
||||
|
||||
|
||||
/* IUnknown/IStream part: */
|
||||
static HRESULT WINAPI IDirectMusicLoaderResourceStream_IStream_QueryInterface (LPSTREAM iface, REFIID riid, void** ppobj) {
|
||||
|
@ -567,6 +567,15 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID* ppobj) {
|
|||
* IDirectMusicLoaderGenericStream implementation
|
||||
*/
|
||||
/* Custom : */
|
||||
|
||||
static void IDirectMusicLoaderGenericStream_Detach (LPSTREAM iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);
|
||||
|
||||
if (This->pStream)
|
||||
IStream_Release (This->pStream);
|
||||
This->pStream = NULL;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicLoaderGenericStream_Attach (LPSTREAM iface, LPSTREAM pStream, LPDIRECTMUSICLOADER8 pLoader) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);
|
||||
|
||||
|
@ -587,14 +596,6 @@ HRESULT WINAPI IDirectMusicLoaderGenericStream_Attach (LPSTREAM iface, LPSTREAM
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
void WINAPI IDirectMusicLoaderGenericStream_Detach (LPSTREAM iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);
|
||||
|
||||
if (This->pStream)
|
||||
IStream_Release (This->pStream);
|
||||
This->pStream = NULL;
|
||||
}
|
||||
|
||||
|
||||
/* IUnknown/IStream part: */
|
||||
static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_QueryInterface (LPSTREAM iface, REFIID riid, void** ppobj) {
|
||||
|
|
Loading…
Reference in New Issue