[PATCH 7/9] dmloader: Use the debug functions provided by dmobject.[ch]

Michael Stefaniuc mstefani at winehq.org
Wed Dec 11 18:11:01 CST 2019


Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
 dlls/dmloader/container.c        |   1 -
 dlls/dmloader/debug.c            | 270 -------------------------------
 dlls/dmloader/debug.h            |  16 --
 dlls/dmloader/dmloader_private.h |   1 +
 dlls/dmloader/dmobject.c         | 247 +++++++++++++++++++++++++++-
 dlls/dmloader/dmobject.h         |  14 +-
 6 files changed, 254 insertions(+), 295 deletions(-)

diff --git a/dlls/dmloader/container.c b/dlls/dmloader/container.c
index 075843ad32..005f0d7e9e 100644
--- a/dlls/dmloader/container.c
+++ b/dlls/dmloader/container.c
@@ -18,7 +18,6 @@
  */
 
 #include "dmloader_private.h"
-#include "dmobject.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(dmloader);
 WINE_DECLARE_DEBUG_CHANNEL(dmfile);
diff --git a/dlls/dmloader/debug.c b/dlls/dmloader/debug.c
index 10ba0bce93..0d274394aa 100644
--- a/dlls/dmloader/debug.c
+++ b/dlls/dmloader/debug.c
@@ -20,8 +20,6 @@
 
 #include "dmloader_private.h"
 
-WINE_DEFAULT_DEBUG_CHANNEL(dmloader);
-
 /* figures out whether given FOURCC is valid DirectMusic form ID */
 BOOL IS_VALID_DMFORM (FOURCC chunkID) {
 	if ((chunkID == DMUS_FOURCC_AUDIOPATH_FORM) || (chunkID == DMUS_FOURCC_BAND_FORM) || (chunkID == DMUS_FOURCC_CHORDMAP_FORM)
@@ -45,237 +43,6 @@ const char *resolve_STREAM_SEEK (DWORD flag) {
 	}
 }
 
-/* FOURCC to string conversion for debug messages */
-const char *debugstr_fourcc (DWORD fourcc) {
-    if (!fourcc) return "'null'";
-    return wine_dbg_sprintf ("\'%c%c%c%c\'",
-		(char)(fourcc), (char)(fourcc >> 8),
-        (char)(fourcc >> 16), (char)(fourcc >> 24));
-}
-
-/* DMUS_VERSION struct to string conversion for debug messages */
-const char *debugstr_dmversion (const DMUS_VERSION *version) {
-	if (!version) return "'null'";
-	return wine_dbg_sprintf ("\'%i,%i,%i,%i\'",
-		HIWORD(version->dwVersionMS),LOWORD(version->dwVersionMS),
-		HIWORD(version->dwVersionLS), LOWORD(version->dwVersionLS));
-}
-
-/* month number into month name (for debugstr_filetime) */
-static const char *debugstr_month (DWORD dwMonth) {
-	switch (dwMonth) {
-		case 1: return "January";
-		case 2: return "February";
-		case 3: return "March";
-		case 4: return "April";
-		case 5: return "May";
-		case 6: return "June";
-		case 7: return "July";
-		case 8: return "August";
-		case 9: return "September";
-		case 10: return "October";
-		case 11: return "November";
-		case 12: return "December";
-		default: return "Invalid";
-	}
-}
-
-/* FILETIME struct to string conversion for debug messages */
-const char *debugstr_filetime (const FILETIME *time) {
-	SYSTEMTIME sysTime;
-
-	if (!time) return "'null'";
-	
-	FileTimeToSystemTime (time, &sysTime);
-	
-	return wine_dbg_sprintf ("\'%02i. %s %04i %02i:%02i:%02i\'",
-		sysTime.wDay, debugstr_month(sysTime.wMonth), sysTime.wYear,
-		sysTime.wHour, sysTime.wMinute, sysTime.wSecond);
-}
-
-/* returns name of given GUID */
-const char *debugstr_dmguid (const GUID *id) {
-	static const guid_info guids[] = {
-		/* CLSIDs */
-		GE(CLSID_AudioVBScript),
-		GE(CLSID_DirectMusic),
-		GE(CLSID_DirectMusicAudioPathConfig),
-		GE(CLSID_DirectMusicAuditionTrack),
-		GE(CLSID_DirectMusicBand),
-		GE(CLSID_DirectMusicBandTrack),
-		GE(CLSID_DirectMusicChordMapTrack),
-		GE(CLSID_DirectMusicChordMap),
-		GE(CLSID_DirectMusicChordTrack),
-		GE(CLSID_DirectMusicCollection),
-		GE(CLSID_DirectMusicCommandTrack),
-		GE(CLSID_DirectMusicComposer),
-		GE(CLSID_DirectMusicContainer),
-		GE(CLSID_DirectMusicGraph),
-		GE(CLSID_DirectMusicLoader),
-		GE(CLSID_DirectMusicLyricsTrack),
-		GE(CLSID_DirectMusicMarkerTrack),
-		GE(CLSID_DirectMusicMelodyFormulationTrack),
-		GE(CLSID_DirectMusicMotifTrack),
-		GE(CLSID_DirectMusicMuteTrack),
-		GE(CLSID_DirectMusicParamControlTrack),
-		GE(CLSID_DirectMusicPatternTrack),
-		GE(CLSID_DirectMusicPerformance),
-		GE(CLSID_DirectMusicScript),
-		GE(CLSID_DirectMusicScriptAutoImpSegment),
-		GE(CLSID_DirectMusicScriptAutoImpPerformance),
-		GE(CLSID_DirectMusicScriptAutoImpSegmentState),
-		GE(CLSID_DirectMusicScriptAutoImpAudioPathConfig),
-		GE(CLSID_DirectMusicScriptAutoImpAudioPath),
-		GE(CLSID_DirectMusicScriptAutoImpSong),
-		GE(CLSID_DirectMusicScriptSourceCodeLoader),
-		GE(CLSID_DirectMusicScriptTrack),
-		GE(CLSID_DirectMusicSection),
-		GE(CLSID_DirectMusicSegment),
-		GE(CLSID_DirectMusicSegmentState),
-		GE(CLSID_DirectMusicSegmentTriggerTrack),
-		GE(CLSID_DirectMusicSegTriggerTrack),
-		GE(CLSID_DirectMusicSeqTrack),
-		GE(CLSID_DirectMusicSignPostTrack),
-		GE(CLSID_DirectMusicSong),
-		GE(CLSID_DirectMusicStyle),
-		GE(CLSID_DirectMusicStyleTrack),
-		GE(CLSID_DirectMusicSynth),
-		GE(CLSID_DirectMusicSynthSink),
-		GE(CLSID_DirectMusicSysExTrack),
-		GE(CLSID_DirectMusicTemplate),
-		GE(CLSID_DirectMusicTempoTrack),
-		GE(CLSID_DirectMusicTimeSigTrack),
-		GE(CLSID_DirectMusicWaveTrack),
-		GE(CLSID_DirectSoundWave),
-		/* IIDs */
-		GE(IID_IDirectMusic),
-		GE(IID_IDirectMusic2),
-		GE(IID_IDirectMusic8),
-		GE(IID_IDirectMusicAudioPath),
-		GE(IID_IDirectMusicBand),
-		GE(IID_IDirectMusicBuffer),
-		GE(IID_IDirectMusicChordMap),
-		GE(IID_IDirectMusicCollection),
-		GE(IID_IDirectMusicComposer),
-		GE(IID_IDirectMusicContainer),
-		GE(IID_IDirectMusicDownload),
-		GE(IID_IDirectMusicDownloadedInstrument),
-		GE(IID_IDirectMusicGetLoader),
-		GE(IID_IDirectMusicGraph),
-		GE(IID_IDirectMusicInstrument),
-		GE(IID_IDirectMusicLoader),
-		GE(IID_IDirectMusicLoader8),
-		GE(IID_IDirectMusicObject),
-		GE(IID_IDirectMusicPatternTrack),
-		GE(IID_IDirectMusicPerformance),
-		GE(IID_IDirectMusicPerformance2),
-		GE(IID_IDirectMusicPerformance8),
-		GE(IID_IDirectMusicPort),
-		GE(IID_IDirectMusicPortDownload),
-		GE(IID_IDirectMusicScript),
-		GE(IID_IDirectMusicSegment),
-		GE(IID_IDirectMusicSegment2),
-		GE(IID_IDirectMusicSegment8),
-		GE(IID_IDirectMusicSegmentState),
-		GE(IID_IDirectMusicSegmentState8),
-		GE(IID_IDirectMusicStyle),
-		GE(IID_IDirectMusicStyle8),
-		GE(IID_IDirectMusicSynth),
-		GE(IID_IDirectMusicSynth8),
-		GE(IID_IDirectMusicSynthSink),
-		GE(IID_IDirectMusicThru),
-		GE(IID_IDirectMusicTool),
-		GE(IID_IDirectMusicTool8),
-		GE(IID_IDirectMusicTrack),
-		GE(IID_IDirectMusicTrack8),
-		GE(IID_IUnknown),
-		GE(IID_IPersistStream),
-		GE(IID_IStream),
-		GE(IID_IClassFactory),
-		/* GUIDs */
-		GE(GUID_DirectMusicAllTypes),
-		GE(GUID_NOTIFICATION_CHORD),
-		GE(GUID_NOTIFICATION_COMMAND),
-		GE(GUID_NOTIFICATION_MEASUREANDBEAT),
-		GE(GUID_NOTIFICATION_PERFORMANCE),
-		GE(GUID_NOTIFICATION_RECOMPOSE),
-		GE(GUID_NOTIFICATION_SEGMENT),
-		GE(GUID_BandParam),
-		GE(GUID_ChordParam),
-		GE(GUID_CommandParam),
-		GE(GUID_CommandParam2),
-		GE(GUID_CommandParamNext),
-		GE(GUID_IDirectMusicBand),
-		GE(GUID_IDirectMusicChordMap),
-		GE(GUID_IDirectMusicStyle),
-		GE(GUID_MuteParam),
-		GE(GUID_Play_Marker),
-		GE(GUID_RhythmParam),
-		GE(GUID_TempoParam),
-		GE(GUID_TimeSignature),
-		GE(GUID_Valid_Start_Time),
-		GE(GUID_Clear_All_Bands),
-		GE(GUID_ConnectToDLSCollection),
-		GE(GUID_Disable_Auto_Download),
-		GE(GUID_DisableTempo),
-		GE(GUID_DisableTimeSig),
-		GE(GUID_Download),
-		GE(GUID_DownloadToAudioPath),
-		GE(GUID_Enable_Auto_Download),
-		GE(GUID_EnableTempo),
-		GE(GUID_EnableTimeSig),
-		GE(GUID_IgnoreBankSelectForGM),
-		GE(GUID_SeedVariations),
-		GE(GUID_StandardMIDIFile),
-		GE(GUID_Unload),
-		GE(GUID_UnloadFromAudioPath),
-		GE(GUID_Variations),
-		GE(GUID_PerfMasterTempo),
-		GE(GUID_PerfMasterVolume),
-		GE(GUID_PerfMasterGrooveLevel),
-		GE(GUID_PerfAutoDownload),
-		GE(GUID_DefaultGMCollection),
-		GE(GUID_Synth_Default),
-		GE(GUID_Buffer_Reverb),
-		GE(GUID_Buffer_EnvReverb),
-		GE(GUID_Buffer_Stereo),
-		GE(GUID_Buffer_3D_Dry),
-		GE(GUID_Buffer_Mono),
-		GE(GUID_DMUS_PROP_GM_Hardware),
-		GE(GUID_DMUS_PROP_GS_Capable),
-		GE(GUID_DMUS_PROP_GS_Hardware),
-		GE(GUID_DMUS_PROP_DLS1),
-		GE(GUID_DMUS_PROP_DLS2),
-		GE(GUID_DMUS_PROP_Effects),
-		GE(GUID_DMUS_PROP_INSTRUMENT2),
-		GE(GUID_DMUS_PROP_LegacyCaps),
-		GE(GUID_DMUS_PROP_MemorySize),
-		GE(GUID_DMUS_PROP_SampleMemorySize),
-		GE(GUID_DMUS_PROP_SamplePlaybackRate),
-		GE(GUID_DMUS_PROP_SetSynthSink),
-		GE(GUID_DMUS_PROP_SinkUsesDSound),
-		GE(GUID_DMUS_PROP_SynthSink_DSOUND),
-		GE(GUID_DMUS_PROP_SynthSink_WAVE),
-		GE(GUID_DMUS_PROP_Volume),
-		GE(GUID_DMUS_PROP_WavesReverb),
-		GE(GUID_DMUS_PROP_WriteLatency),
-		GE(GUID_DMUS_PROP_WritePeriod),
-		GE(GUID_DMUS_PROP_XG_Capable),
-		GE(GUID_DMUS_PROP_XG_Hardware)
-	};
-
-	unsigned int i;
-
-	if (!id) return "(null)";
-	for (i = 0; i < ARRAY_SIZE(guids); i++) {
-		if (IsEqualGUID(id, guids[i].guid))
-			return guids[i].name;
-	}
-	
-	/* if we didn't find it, act like standard debugstr_guid */	
-	return debugstr_guid(id);
-}	
-
 /* returns name of given error code */
 const char *debugstr_dmreturn (DWORD code) {
 	static const flag_info codes[] = {
@@ -443,25 +210,6 @@ static const char* debugstr_flags (DWORD flags, const flag_info* names, size_t n
 	return ptr;
 }
 
-/* dump DMUS_OBJ flags */
-static const char *debugstr_DMUS_OBJ_FLAGS (DWORD flagmask) {
-    static const flag_info flags[] = {
-	    FE(DMUS_OBJ_OBJECT),
-	    FE(DMUS_OBJ_CLASS),
-	    FE(DMUS_OBJ_NAME),
-	    FE(DMUS_OBJ_CATEGORY),
-	    FE(DMUS_OBJ_FILENAME),
-	    FE(DMUS_OBJ_FULLPATH),
-	    FE(DMUS_OBJ_URL),
-	    FE(DMUS_OBJ_VERSION),
-	    FE(DMUS_OBJ_DATE),
-	    FE(DMUS_OBJ_LOADED),
-	    FE(DMUS_OBJ_MEMORY),
-	    FE(DMUS_OBJ_STREAM)
-	};
-    return debugstr_flags(flagmask, flags, ARRAY_SIZE(flags));
-}
-
 /* dump DMUS_CONTAINER flags */
 static const char *debugstr_DMUS_CONTAINER_FLAGS (DWORD flagmask) {
     static const flag_info flags[] = {
@@ -478,24 +226,6 @@ static const char *debugstr_DMUS_CONTAINED_OBJF_FLAGS (DWORD flagmask) {
     return debugstr_flags(flagmask, flags, ARRAY_SIZE(flags));
 }
 
-/* Dump whole DMUS_OBJECTDESC struct */
-void dump_DMUS_OBJECTDESC(LPDMUS_OBJECTDESC desc)
-{
-    TRACE("DMUS_OBJECTDESC (%p):\n", desc);
-    TRACE(" - dwSize = %d\n", desc->dwSize);
-    TRACE(" - dwValidData = %s\n", debugstr_DMUS_OBJ_FLAGS (desc->dwValidData));
-    if (desc->dwValidData & DMUS_OBJ_CLASS)    TRACE(" - guidClass = %s\n", debugstr_dmguid(&desc->guidClass));
-    if (desc->dwValidData & DMUS_OBJ_OBJECT)   TRACE(" - guidObject = %s\n", debugstr_guid(&desc->guidObject));
-    if (desc->dwValidData & DMUS_OBJ_DATE)     TRACE(" - ftDate = %s\n", debugstr_filetime (&desc->ftDate));
-    if (desc->dwValidData & DMUS_OBJ_VERSION)  TRACE(" - vVersion = %s\n", debugstr_dmversion(&desc->vVersion));
-    if (desc->dwValidData & DMUS_OBJ_NAME)     TRACE(" - wszName = %s\n", debugstr_w(desc->wszName));
-    if (desc->dwValidData & DMUS_OBJ_CATEGORY) TRACE(" - wszCategory = %s\n", debugstr_w(desc->wszCategory));
-    if (desc->dwValidData & DMUS_OBJ_FILENAME) TRACE(" - wszFileName = %s\n", debugstr_w(desc->wszFileName));
-    if (desc->dwValidData & DMUS_OBJ_MEMORY)   TRACE(" - llMemLength = 0x%s - pbMemData = %p\n",
-                                                     wine_dbgstr_longlong(desc->llMemLength), desc->pbMemData);
-    if (desc->dwValidData & DMUS_OBJ_STREAM)   TRACE(" - pStream = %p\n", desc->pStream);
-}
-
 const char *debugstr_DMUS_IO_CONTAINER_HEADER (LPDMUS_IO_CONTAINER_HEADER pHeader) {
 	if (pHeader) {
 		char buffer[1024], *ptr = buffer;
diff --git a/dlls/dmloader/debug.h b/dlls/dmloader/debug.h
index 40af340ccf..fec35cfbff 100644
--- a/dlls/dmloader/debug.h
+++ b/dlls/dmloader/debug.h
@@ -26,11 +26,6 @@ typedef struct {
     const char* name;
 } flag_info;
 
-typedef struct {
-    const GUID *guid;
-    const char* name;
-} guid_info;
-
 /* used for initialising structs */
 #define DM_STRUCT_INIT(x) 				\
 	do {								\
@@ -39,25 +34,14 @@ typedef struct {
 	} while (0)
 
 #define FE(x) { x, #x }	
-#define GE(x) { &x, #x }
 
 /* check whether chunkID is valid dmobject form chunk */
 extern BOOL IS_VALID_DMFORM (FOURCC chunkID) DECLSPEC_HIDDEN;
 /* translate STREAM_SEEK flag to string */
 extern const char *resolve_STREAM_SEEK (DWORD flag) DECLSPEC_HIDDEN;
-/* FOURCC to string conversion for debug messages */
-extern const char *debugstr_fourcc (DWORD fourcc) DECLSPEC_HIDDEN;
-/* DMUS_VERSION struct to string conversion for debug messages */
-extern const char *debugstr_dmversion (const DMUS_VERSION *version) DECLSPEC_HIDDEN;
-/* FILETIME struct to string conversion for debug messages */
-extern const char *debugstr_filetime (const FILETIME *time) DECLSPEC_HIDDEN;
-/* returns name of given GUID */
-extern const char *debugstr_dmguid (const GUID *id) DECLSPEC_HIDDEN;
 /* returns name of given error code */
 extern const char *debugstr_dmreturn (DWORD code) DECLSPEC_HIDDEN;
 
-/* dump whole DMUS_OBJECTDESC struct */
-extern void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc) DECLSPEC_HIDDEN;
 extern const char *debugstr_DMUS_IO_CONTAINER_HEADER (LPDMUS_IO_CONTAINER_HEADER pHeader) DECLSPEC_HIDDEN;
 extern const char *debugstr_DMUS_IO_CONTAINED_OBJECT_HEADER (LPDMUS_IO_CONTAINED_OBJECT_HEADER pHeader) DECLSPEC_HIDDEN;
 
diff --git a/dlls/dmloader/dmloader_private.h b/dlls/dmloader/dmloader_private.h
index a8505003c7..94bb9ddf1b 100644
--- a/dlls/dmloader/dmloader_private.h
+++ b/dlls/dmloader/dmloader_private.h
@@ -40,6 +40,7 @@
 #include "dmusici.h"
 #include "dmusicf.h"
 #include "dmusics.h"
+#include "dmobject.h"
 
 #define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field))
 
diff --git a/dlls/dmloader/dmobject.c b/dlls/dmloader/dmobject.c
index 25f3198d2b..9ea31ab32a 100644
--- a/dlls/dmloader/dmobject.c
+++ b/dlls/dmloader/dmobject.c
@@ -25,22 +25,257 @@
 #include "objbase.h"
 #include "dmusici.h"
 #include "dmusicf.h"
+#include "dmusics.h"
 #include "dmobject.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(dmobj);
 WINE_DECLARE_DEBUG_CHANNEL(dmfile);
 
-/* RIFF format parsing */
-#define CHUNK_HDR_SIZE (sizeof(FOURCC) + sizeof(DWORD))
+/* Debugging helpers */
+const char *debugstr_dmguid(const GUID *id) {
+    unsigned int i;
+#define X(guid) { &guid, #guid }
+    static const struct {
+        const GUID *guid;
+        const char *name;
+    } guids[] = {
+        /* CLSIDs */
+        X(CLSID_AudioVBScript),
+        X(CLSID_DirectMusic),
+        X(CLSID_DirectMusicAudioPathConfig),
+        X(CLSID_DirectMusicAuditionTrack),
+        X(CLSID_DirectMusicBand),
+        X(CLSID_DirectMusicBandTrack),
+        X(CLSID_DirectMusicChordMapTrack),
+        X(CLSID_DirectMusicChordMap),
+        X(CLSID_DirectMusicChordTrack),
+        X(CLSID_DirectMusicCollection),
+        X(CLSID_DirectMusicCommandTrack),
+        X(CLSID_DirectMusicComposer),
+        X(CLSID_DirectMusicContainer),
+        X(CLSID_DirectMusicGraph),
+        X(CLSID_DirectMusicLoader),
+        X(CLSID_DirectMusicLyricsTrack),
+        X(CLSID_DirectMusicMarkerTrack),
+        X(CLSID_DirectMusicMelodyFormulationTrack),
+        X(CLSID_DirectMusicMotifTrack),
+        X(CLSID_DirectMusicMuteTrack),
+        X(CLSID_DirectMusicParamControlTrack),
+        X(CLSID_DirectMusicPatternTrack),
+        X(CLSID_DirectMusicPerformance),
+        X(CLSID_DirectMusicScript),
+        X(CLSID_DirectMusicScriptAutoImpSegment),
+        X(CLSID_DirectMusicScriptAutoImpPerformance),
+        X(CLSID_DirectMusicScriptAutoImpSegmentState),
+        X(CLSID_DirectMusicScriptAutoImpAudioPathConfig),
+        X(CLSID_DirectMusicScriptAutoImpAudioPath),
+        X(CLSID_DirectMusicScriptAutoImpSong),
+        X(CLSID_DirectMusicScriptSourceCodeLoader),
+        X(CLSID_DirectMusicScriptTrack),
+        X(CLSID_DirectMusicSection),
+        X(CLSID_DirectMusicSegment),
+        X(CLSID_DirectMusicSegmentState),
+        X(CLSID_DirectMusicSegmentTriggerTrack),
+        X(CLSID_DirectMusicSegTriggerTrack),
+        X(CLSID_DirectMusicSeqTrack),
+        X(CLSID_DirectMusicSignPostTrack),
+        X(CLSID_DirectMusicSong),
+        X(CLSID_DirectMusicStyle),
+        X(CLSID_DirectMusicStyleTrack),
+        X(CLSID_DirectMusicSynth),
+        X(CLSID_DirectMusicSynthSink),
+        X(CLSID_DirectMusicSysExTrack),
+        X(CLSID_DirectMusicTemplate),
+        X(CLSID_DirectMusicTempoTrack),
+        X(CLSID_DirectMusicTimeSigTrack),
+        X(CLSID_DirectMusicWaveTrack),
+        X(CLSID_DirectSoundWave),
+        /* IIDs */
+        X(IID_IDirectMusic),
+        X(IID_IDirectMusic2),
+        X(IID_IDirectMusic8),
+        X(IID_IDirectMusicAudioPath),
+        X(IID_IDirectMusicBand),
+        X(IID_IDirectMusicBuffer),
+        X(IID_IDirectMusicChordMap),
+        X(IID_IDirectMusicCollection),
+        X(IID_IDirectMusicComposer),
+        X(IID_IDirectMusicContainer),
+        X(IID_IDirectMusicDownload),
+        X(IID_IDirectMusicDownloadedInstrument),
+        X(IID_IDirectMusicGetLoader),
+        X(IID_IDirectMusicGraph),
+        X(IID_IDirectMusicInstrument),
+        X(IID_IDirectMusicLoader),
+        X(IID_IDirectMusicLoader8),
+        X(IID_IDirectMusicObject),
+        X(IID_IDirectMusicPatternTrack),
+        X(IID_IDirectMusicPerformance),
+        X(IID_IDirectMusicPerformance2),
+        X(IID_IDirectMusicPerformance8),
+        X(IID_IDirectMusicPort),
+        X(IID_IDirectMusicPortDownload),
+        X(IID_IDirectMusicScript),
+        X(IID_IDirectMusicSegment),
+        X(IID_IDirectMusicSegment2),
+        X(IID_IDirectMusicSegment8),
+        X(IID_IDirectMusicSegmentState),
+        X(IID_IDirectMusicSegmentState8),
+        X(IID_IDirectMusicStyle),
+        X(IID_IDirectMusicStyle8),
+        X(IID_IDirectMusicSynth),
+        X(IID_IDirectMusicSynth8),
+        X(IID_IDirectMusicSynthSink),
+        X(IID_IDirectMusicThru),
+        X(IID_IDirectMusicTool),
+        X(IID_IDirectMusicTool8),
+        X(IID_IDirectMusicTrack),
+        X(IID_IDirectMusicTrack8),
+        X(IID_IUnknown),
+        X(IID_IPersistStream),
+        X(IID_IStream),
+        X(IID_IClassFactory),
+        /* GUIDs */
+        X(GUID_DirectMusicAllTypes),
+        X(GUID_NOTIFICATION_CHORD),
+        X(GUID_NOTIFICATION_COMMAND),
+        X(GUID_NOTIFICATION_MEASUREANDBEAT),
+        X(GUID_NOTIFICATION_PERFORMANCE),
+        X(GUID_NOTIFICATION_RECOMPOSE),
+        X(GUID_NOTIFICATION_SEGMENT),
+        X(GUID_BandParam),
+        X(GUID_ChordParam),
+        X(GUID_CommandParam),
+        X(GUID_CommandParam2),
+        X(GUID_CommandParamNext),
+        X(GUID_IDirectMusicBand),
+        X(GUID_IDirectMusicChordMap),
+        X(GUID_IDirectMusicStyle),
+        X(GUID_MuteParam),
+        X(GUID_Play_Marker),
+        X(GUID_RhythmParam),
+        X(GUID_TempoParam),
+        X(GUID_TimeSignature),
+        X(GUID_Valid_Start_Time),
+        X(GUID_Clear_All_Bands),
+        X(GUID_ConnectToDLSCollection),
+        X(GUID_Disable_Auto_Download),
+        X(GUID_DisableTempo),
+        X(GUID_DisableTimeSig),
+        X(GUID_Download),
+        X(GUID_DownloadToAudioPath),
+        X(GUID_Enable_Auto_Download),
+        X(GUID_EnableTempo),
+        X(GUID_EnableTimeSig),
+        X(GUID_IgnoreBankSelectForGM),
+        X(GUID_SeedVariations),
+        X(GUID_StandardMIDIFile),
+        X(GUID_Unload),
+        X(GUID_UnloadFromAudioPath),
+        X(GUID_Variations),
+        X(GUID_PerfMasterTempo),
+        X(GUID_PerfMasterVolume),
+        X(GUID_PerfMasterGrooveLevel),
+        X(GUID_PerfAutoDownload),
+        X(GUID_DefaultGMCollection),
+        X(GUID_Synth_Default),
+        X(GUID_Buffer_Reverb),
+        X(GUID_Buffer_EnvReverb),
+        X(GUID_Buffer_Stereo),
+        X(GUID_Buffer_3D_Dry),
+        X(GUID_Buffer_Mono),
+        X(GUID_DMUS_PROP_GM_Hardware),
+        X(GUID_DMUS_PROP_GS_Capable),
+        X(GUID_DMUS_PROP_GS_Hardware),
+        X(GUID_DMUS_PROP_DLS1),
+        X(GUID_DMUS_PROP_DLS2),
+        X(GUID_DMUS_PROP_Effects),
+        X(GUID_DMUS_PROP_INSTRUMENT2),
+        X(GUID_DMUS_PROP_LegacyCaps),
+        X(GUID_DMUS_PROP_MemorySize),
+        X(GUID_DMUS_PROP_SampleMemorySize),
+        X(GUID_DMUS_PROP_SamplePlaybackRate),
+        X(GUID_DMUS_PROP_SetSynthSink),
+        X(GUID_DMUS_PROP_SinkUsesDSound),
+        X(GUID_DMUS_PROP_SynthSink_DSOUND),
+        X(GUID_DMUS_PROP_SynthSink_WAVE),
+        X(GUID_DMUS_PROP_Volume),
+        X(GUID_DMUS_PROP_WavesReverb),
+        X(GUID_DMUS_PROP_WriteLatency),
+        X(GUID_DMUS_PROP_WritePeriod),
+        X(GUID_DMUS_PROP_XG_Capable),
+        X(GUID_DMUS_PROP_XG_Hardware)
+    };
+#undef X
+
+    if (!id)
+        return "(null)";
+
+    for (i = 0; i < ARRAY_SIZE(guids); i++)
+        if (IsEqualGUID(id, guids[i].guid))
+            return guids[i].name;
+
+    return debugstr_guid(id);
+}
 
-static inline const char *debugstr_fourcc(DWORD fourcc)
+void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc)
 {
-    if (!fourcc) return "''";
-    return wine_dbg_sprintf("'%c%c%c%c'", (char)(fourcc), (char)(fourcc >> 8),
-            (char)(fourcc >> 16), (char)(fourcc >> 24));
+    if (!desc || !TRACE_ON(dmfile))
+        return;
+
+    TRACE_(dmfile)("DMUS_OBJECTDESC (%p):", desc);
+    TRACE_(dmfile)(" - dwSize = %u\n", desc->dwSize);
+
+#define X(flag) if (desc->dwValidData & flag) TRACE_(dmfile)(#flag " ")
+    TRACE_(dmfile)(" - dwValidData = %#08x ( ", desc->dwValidData);
+    X(DMUS_OBJ_OBJECT);
+    X(DMUS_OBJ_CLASS);
+    X(DMUS_OBJ_NAME);
+    X(DMUS_OBJ_CATEGORY);
+    X(DMUS_OBJ_FILENAME);
+    X(DMUS_OBJ_FULLPATH);
+    X(DMUS_OBJ_URL);
+    X(DMUS_OBJ_VERSION);
+    X(DMUS_OBJ_DATE);
+    X(DMUS_OBJ_LOADED);
+    X(DMUS_OBJ_MEMORY);
+    X(DMUS_OBJ_STREAM);
+    TRACE_(dmfile)(")\n");
+#undef X
+
+    if (desc->dwValidData & DMUS_OBJ_CLASS)
+        TRACE_(dmfile)(" - guidClass = %s\n", debugstr_dmguid(&desc->guidClass));
+    if (desc->dwValidData & DMUS_OBJ_OBJECT)
+        TRACE_(dmfile)(" - guidObject = %s\n", debugstr_guid(&desc->guidObject));
+
+    if (desc->dwValidData & DMUS_OBJ_DATE) {
+        SYSTEMTIME time;
+        FileTimeToSystemTime(&desc->ftDate, &time);
+        TRACE_(dmfile)(" - ftDate = \'%04u-%02u-%02u %02u:%02u:%02u\'\n",
+                time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);
+    }
+    if (desc->dwValidData & DMUS_OBJ_VERSION)
+        TRACE_(dmfile)(" - vVersion = \'%u,%u,%u,%u\'\n",
+                HIWORD(desc->vVersion.dwVersionMS), LOWORD(desc->vVersion.dwVersionMS),
+                HIWORD(desc->vVersion.dwVersionLS), LOWORD(desc->vVersion.dwVersionLS));
+    if (desc->dwValidData & DMUS_OBJ_NAME)
+        TRACE_(dmfile)(" - wszName = %s\n", debugstr_w(desc->wszName));
+    if (desc->dwValidData & DMUS_OBJ_CATEGORY)
+        TRACE_(dmfile)(" - wszCategory = %s\n", debugstr_w(desc->wszCategory));
+    if (desc->dwValidData & DMUS_OBJ_FILENAME)
+        TRACE_(dmfile)(" - wszFileName = %s\n", debugstr_w(desc->wszFileName));
+    if (desc->dwValidData & DMUS_OBJ_MEMORY)
+        TRACE_(dmfile)(" - llMemLength = 0x%s - pbMemData = %p\n",
+                wine_dbgstr_longlong(desc->llMemLength), desc->pbMemData);
+    if (desc->dwValidData & DMUS_OBJ_STREAM)
+        TRACE_(dmfile)(" - pStream = %p\n", desc->pStream);
 }
 
+
+/* RIFF format parsing */
+#define CHUNK_HDR_SIZE (sizeof(FOURCC) + sizeof(DWORD))
+
 const char *debugstr_chunk(const struct chunk_entry *chunk)
 {
     const char *type = "";
diff --git a/dlls/dmloader/dmobject.h b/dlls/dmloader/dmobject.h
index 4a721cc152..d347020691 100644
--- a/dlls/dmloader/dmobject.h
+++ b/dlls/dmloader/dmobject.h
@@ -60,8 +60,6 @@ static inline HRESULT stream_reset_chunk_start(IStream *stream, const struct chu
     return IStream_Seek(stream, offset, STREAM_SEEK_SET, NULL);
 }
 
-const char *debugstr_chunk(const struct chunk_entry *chunk) DECLSPEC_HIDDEN;
-
 
 /* IDirectMusicObject base object */
 struct dmobject {
@@ -106,3 +104,15 @@ HRESULT WINAPI unimpl_IPersistStream_Save(IPersistStream *iface, IStream *stream
         BOOL clear_dirty) DECLSPEC_HIDDEN;
 HRESULT WINAPI unimpl_IPersistStream_GetSizeMax(IPersistStream *iface,
         ULARGE_INTEGER *size) DECLSPEC_HIDDEN;
+
+/* Debugging helpers */
+const char *debugstr_chunk(const struct chunk_entry *chunk) DECLSPEC_HIDDEN;
+const char *debugstr_dmguid(const GUID *id) DECLSPEC_HIDDEN;
+void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc) DECLSPEC_HIDDEN;
+
+static inline const char *debugstr_fourcc(DWORD fourcc)
+{
+    if (!fourcc) return "''";
+    return wine_dbg_sprintf("'%c%c%c%c'", (char)(fourcc), (char)(fourcc >> 8),
+            (char)(fourcc >> 16), (char)(fourcc >> 24));
+}
-- 
2.23.0




More information about the wine-devel mailing list