Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
02bfacff
Commit
02bfacff
authored
Dec 03, 2008
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dmloader: Make some functions static.
parent
72f3e3d4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
136 additions
and
154 deletions
+136
-154
container.c
dlls/dmloader/container.c
+40
-39
dmloader_private.h
dlls/dmloader/dmloader_private.h
+0
-12
loader.c
dlls/dmloader/loader.c
+70
-78
loaderstream.c
dlls/dmloader/loaderstream.c
+26
-25
No files found.
dlls/dmloader/container.c
View file @
02bfacff
...
@@ -35,6 +35,46 @@ static ULONG WINAPI IDirectMusicContainerImpl_IPersistStream_AddRef (LPPERSISTST
...
@@ -35,6 +35,46 @@ static ULONG WINAPI IDirectMusicContainerImpl_IPersistStream_AddRef (LPPERSISTST
* IDirectMusicContainerImpl implementation
* IDirectMusicContainerImpl implementation
*/
*/
/* IUnknown/IDirectMusicContainer part: */
/* 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
)
{
static
HRESULT
WINAPI
IDirectMusicContainerImpl_IDirectMusicContainer_QueryInterface
(
LPDIRECTMUSICCONTAINER
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicContainerImpl
,
ContainerVtbl
,
iface
);
ICOM_THIS_MULTI
(
IDirectMusicContainerImpl
,
ContainerVtbl
,
iface
);
...
@@ -904,42 +944,3 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID* p
...
@@ -904,42 +944,3 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID* p
return
IDirectMusicContainerImpl_IDirectMusicContainer_QueryInterface
((
LPDIRECTMUSICCONTAINER
)
&
obj
->
ContainerVtbl
,
lpcGUID
,
ppobj
);
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
;
}
dlls/dmloader/dmloader_private.h
View file @
02bfacff
...
@@ -68,10 +68,7 @@ extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderCF (LPCGUID lpcGUID, LPVOID
...
@@ -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_CreateDirectMusicContainerCF
(
LPCGUID
lpcGUID
,
LPVOID
*
ppobj
,
LPUNKNOWN
pUnkOuter
);
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoaderImpl
(
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_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_CreateDirectMusicLoaderFileStream
(
LPVOID
*
ppobj
);
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoaderResourceStream
(
LPVOID
*
ppobj
);
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoaderResourceStream
(
LPVOID
*
ppobj
);
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoaderGenericStream
(
LPVOID
*
ppobj
);
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoaderGenericStream
(
LPVOID
*
ppobj
);
...
@@ -174,7 +171,6 @@ struct IDirectMusicLoaderFileStream {
...
@@ -174,7 +171,6 @@ struct IDirectMusicLoaderFileStream {
/* Custom: */
/* Custom: */
extern
HRESULT
WINAPI
IDirectMusicLoaderFileStream_Attach
(
LPSTREAM
iface
,
LPCWSTR
wzFile
,
LPDIRECTMUSICLOADER8
pLoader
);
extern
HRESULT
WINAPI
IDirectMusicLoaderFileStream_Attach
(
LPSTREAM
iface
,
LPCWSTR
wzFile
,
LPDIRECTMUSICLOADER8
pLoader
);
extern
void
WINAPI
IDirectMusicLoaderFileStream_Detach
(
LPSTREAM
iface
);
/*****************************************************************************
/*****************************************************************************
* IDirectMusicLoaderResourceStream implementation structure
* IDirectMusicLoaderResourceStream implementation structure
...
@@ -196,7 +192,6 @@ struct IDirectMusicLoaderResourceStream {
...
@@ -196,7 +192,6 @@ struct IDirectMusicLoaderResourceStream {
/* Custom: */
/* Custom: */
extern
HRESULT
WINAPI
IDirectMusicLoaderResourceStream_Attach
(
LPSTREAM
iface
,
LPBYTE
pbMemData
,
LONGLONG
llMemLength
,
LONGLONG
llPos
,
LPDIRECTMUSICLOADER8
pLoader
);
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
* IDirectMusicLoaderGenericStream implementation structure
...
@@ -215,7 +210,6 @@ struct IDirectMusicLoaderGenericStream {
...
@@ -215,7 +210,6 @@ struct IDirectMusicLoaderGenericStream {
/* Custom: */
/* Custom: */
extern
HRESULT
WINAPI
IDirectMusicLoaderGenericStream_Attach
(
LPSTREAM
iface
,
LPSTREAM
pStream
,
LPDIRECTMUSICLOADER8
pLoader
);
extern
HRESULT
WINAPI
IDirectMusicLoaderGenericStream_Attach
(
LPSTREAM
iface
,
LPSTREAM
pStream
,
LPDIRECTMUSICLOADER8
pLoader
);
extern
void
WINAPI
IDirectMusicLoaderGenericStream_Detach
(
LPSTREAM
iface
);
/*****************************************************************************
/*****************************************************************************
* Misc.
* Misc.
...
@@ -226,12 +220,6 @@ typedef struct _WINE_CHUNK {
...
@@ -226,12 +220,6 @@ typedef struct _WINE_CHUNK {
DWORD
dwSize
;
/* size of the chunk */
DWORD
dwSize
;
/* size of the chunk */
}
WINE_CHUNK
,
*
LPWINE_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"
#include "debug.h"
#endif
/* __WINE_DMLOADER_PRIVATE_H */
#endif
/* __WINE_DMLOADER_PRIVATE_H */
dlls/dmloader/loader.c
View file @
02bfacff
...
@@ -21,13 +21,53 @@
...
@@ -21,13 +21,53 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
dmloader
);
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_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
* IDirectMusicLoaderImpl implementation
*/
*/
/* IUnknown/IDirectMusicLoader(8) part: */
/* IUnknown/IDirectMusicLoader(8) part: */
static
ULONG
WINAPI
IDirectMusicLoaderImpl_IDirectMusicLoader_AddRef
(
LPDIRECTMUSICLOADER8
iface
);
static
HRESULT
WINAPI
IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface
(
LPDIRECTMUSICLOADER8
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface
(
LPDIRECTMUSICLOADER8
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicLoaderImpl
,
LoaderVtbl
,
iface
);
ICOM_THIS_MULTI
(
IDirectMusicLoaderImpl
,
LoaderVtbl
,
iface
);
...
@@ -36,7 +76,7 @@ static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface (
...
@@ -36,7 +76,7 @@ static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface (
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
)
||
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
)
||
IsEqualIID
(
riid
,
&
IID_IDirectMusicLoader
)
||
IsEqualIID
(
riid
,
&
IID_IDirectMusicLoader
)
||
IsEqualIID
(
riid
,
&
IID_IDirectMusicLoader8
))
{
IsEqualIID
(
riid
,
&
IID_IDirectMusicLoader8
))
{
IDirectMusicLoader
Impl_IDirectMusicLoader
_AddRef
(
iface
);
IDirectMusicLoader_AddRef
(
iface
);
*
ppobj
=
This
;
*
ppobj
=
This
;
return
S_OK
;
return
S_OK
;
}
}
...
@@ -57,8 +97,16 @@ static ULONG WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_Release (LPDIRECTM
...
@@ -57,8 +97,16 @@ static ULONG WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_Release (LPDIRECTM
DWORD
dwRef
=
InterlockedDecrement
(
&
This
->
dwRef
);
DWORD
dwRef
=
InterlockedDecrement
(
&
This
->
dwRef
);
TRACE
(
"(%p): ReleaseRef to %d
\n
"
,
This
,
This
->
dwRef
);
TRACE
(
"(%p): ReleaseRef to %d
\n
"
,
This
,
This
->
dwRef
);
if
(
dwRef
==
0
)
{
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
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
/* decrease number of instances */
InterlockedDecrement
(
&
dwDirectMusicLoader
);
}
}
return
dwRef
;
return
dwRef
;
...
@@ -788,6 +836,23 @@ static const IDirectMusicLoader8Vtbl DirectMusicLoader_Loader_Vtbl = {
...
@@ -788,6 +836,23 @@ static const IDirectMusicLoader8Vtbl DirectMusicLoader_Loader_Vtbl = {
IDirectMusicLoaderImpl_IDirectMusicLoader_LoadObjectFromFile
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 */
/* for ClassFactory */
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoaderImpl
(
LPCGUID
lpcGUID
,
LPVOID
*
ppobj
,
LPUNKNOWN
pUnkOuter
)
{
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoaderImpl
(
LPCGUID
lpcGUID
,
LPVOID
*
ppobj
,
LPUNKNOWN
pUnkOuter
)
{
IDirectMusicLoaderImpl
*
obj
;
IDirectMusicLoaderImpl
*
obj
;
...
@@ -838,43 +903,8 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl (LPCGUID lpcGUID, LPVOID *ppob
...
@@ -838,43 +903,8 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl (LPCGUID lpcGUID, LPVOID *ppob
return
IDirectMusicLoaderImpl_IDirectMusicLoader_QueryInterface
((
LPDIRECTMUSICLOADER8
)
obj
,
lpcGUID
,
ppobj
);
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 */
/* 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
);
ICOM_THIS_MULTI
(
IDirectMusicLoaderImpl
,
LoaderVtbl
,
iface
);
struct
list
*
pEntry
;
struct
list
*
pEntry
;
TRACE
(
": (%p, %s, %p, %p)
\n
"
,
This
,
debugstr_dmguid
(
pClassID
),
wszSearchPath
,
pbCache
);
TRACE
(
": (%p, %s, %p, %p)
\n
"
,
This
,
debugstr_dmguid
(
pClassID
),
wszSearchPath
,
pbCache
);
...
@@ -916,7 +946,7 @@ static HRESULT DMUSIC_SetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pCl
...
@@ -916,7 +946,7 @@ static HRESULT DMUSIC_SetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pCl
return
result
;
return
result
;
}
}
HRESULT
WINAPI
DMUSIC_InitLoaderSettings
(
LPDIRECTMUSICLOADER8
iface
)
{
static
HRESULT
DMUSIC_InitLoaderSettings
(
LPDIRECTMUSICLOADER8
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicLoaderImpl
,
LoaderVtbl
,
iface
);
ICOM_THIS_MULTI
(
IDirectMusicLoaderImpl
,
LoaderVtbl
,
iface
);
/* hard-coded list of classes */
/* hard-coded list of classes */
...
@@ -950,41 +980,3 @@ HRESULT WINAPI DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface) {
...
@@ -950,41 +980,3 @@ HRESULT WINAPI DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface) {
return
S_OK
;
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
;
}
dlls/dmloader/loaderstream.c
View file @
02bfacff
...
@@ -64,6 +64,14 @@ static ULONG WINAPI IDirectMusicLoaderGenericStream_IDirectMusicGetLoader_AddRef
...
@@ -64,6 +64,14 @@ static ULONG WINAPI IDirectMusicLoaderGenericStream_IDirectMusicGetLoader_AddRef
* IDirectMusicLoaderFileStream implementation
* IDirectMusicLoaderFileStream implementation
*/
*/
/* Custom : */
/* 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
)
{
HRESULT
WINAPI
IDirectMusicLoaderFileStream_Attach
(
LPSTREAM
iface
,
LPCWSTR
wzFile
,
LPDIRECTMUSICLOADER8
pLoader
)
{
ICOM_THIS_MULTI
(
IDirectMusicLoaderFileStream
,
StreamVtbl
,
iface
);
ICOM_THIS_MULTI
(
IDirectMusicLoaderFileStream
,
StreamVtbl
,
iface
);
TRACE
(
"(%p, %s, %p)
\n
"
,
This
,
debugstr_w
(
wzFile
),
pLoader
);
TRACE
(
"(%p, %s, %p)
\n
"
,
This
,
debugstr_w
(
wzFile
),
pLoader
);
...
@@ -80,15 +88,6 @@ HRESULT WINAPI IDirectMusicLoaderFileStream_Attach (LPSTREAM iface, LPCWSTR wzFi
...
@@ -80,15 +88,6 @@ HRESULT WINAPI IDirectMusicLoaderFileStream_Attach (LPSTREAM iface, LPCWSTR wzFi
return
S_OK
;
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: */
/* IUnknown/IStream part: */
static
HRESULT
WINAPI
IDirectMusicLoaderFileStream_IStream_QueryInterface
(
LPSTREAM
iface
,
REFIID
riid
,
void
**
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicLoaderFileStream_IStream_QueryInterface
(
LPSTREAM
iface
,
REFIID
riid
,
void
**
ppobj
)
{
...
@@ -311,6 +310,15 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID* ppobj) {
...
@@ -311,6 +310,15 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID* ppobj) {
* IDirectMusicLoaderResourceStream implementation
* IDirectMusicLoaderResourceStream implementation
*/
*/
/* Custom : */
/* 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
)
{
HRESULT
WINAPI
IDirectMusicLoaderResourceStream_Attach
(
LPSTREAM
iface
,
LPBYTE
pbMemData
,
LONGLONG
llMemLength
,
LONGLONG
llPos
,
LPDIRECTMUSICLOADER8
pLoader
)
{
ICOM_THIS_MULTI
(
IDirectMusicLoaderResourceStream
,
StreamVtbl
,
iface
);
ICOM_THIS_MULTI
(
IDirectMusicLoaderResourceStream
,
StreamVtbl
,
iface
);
...
@@ -328,14 +336,6 @@ HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach (LPSTREAM iface, LPBYTE p
...
@@ -328,14 +336,6 @@ HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach (LPSTREAM iface, LPBYTE p
return
S_OK
;
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: */
/* IUnknown/IStream part: */
static
HRESULT
WINAPI
IDirectMusicLoaderResourceStream_IStream_QueryInterface
(
LPSTREAM
iface
,
REFIID
riid
,
void
**
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicLoaderResourceStream_IStream_QueryInterface
(
LPSTREAM
iface
,
REFIID
riid
,
void
**
ppobj
)
{
...
@@ -567,6 +567,15 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID* ppobj) {
...
@@ -567,6 +567,15 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID* ppobj) {
* IDirectMusicLoaderGenericStream implementation
* IDirectMusicLoaderGenericStream implementation
*/
*/
/* Custom : */
/* 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
)
{
HRESULT
WINAPI
IDirectMusicLoaderGenericStream_Attach
(
LPSTREAM
iface
,
LPSTREAM
pStream
,
LPDIRECTMUSICLOADER8
pLoader
)
{
ICOM_THIS_MULTI
(
IDirectMusicLoaderGenericStream
,
StreamVtbl
,
iface
);
ICOM_THIS_MULTI
(
IDirectMusicLoaderGenericStream
,
StreamVtbl
,
iface
);
...
@@ -587,14 +596,6 @@ HRESULT WINAPI IDirectMusicLoaderGenericStream_Attach (LPSTREAM iface, LPSTREAM
...
@@ -587,14 +596,6 @@ HRESULT WINAPI IDirectMusicLoaderGenericStream_Attach (LPSTREAM iface, LPSTREAM
return
S_OK
;
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: */
/* IUnknown/IStream part: */
static
HRESULT
WINAPI
IDirectMusicLoaderGenericStream_IStream_QueryInterface
(
LPSTREAM
iface
,
REFIID
riid
,
void
**
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicLoaderGenericStream_IStream_QueryInterface
(
LPSTREAM
iface
,
REFIID
riid
,
void
**
ppobj
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment