From dccedd4761b7081199a242c564ba9fb433fc4eba Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Thu, 12 Dec 2019 01:11:01 +0100 Subject: [PATCH] dmloader: Use the debug functions provided by dmobject.[ch]. Signed-off-by: Michael Stefaniuc Signed-off-by: Alexandre Julliard --- 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 | 249 +++++++++++++++++++++++++++- dlls/dmloader/dmobject.h | 14 +- 6 files changed, 255 insertions(+), 296 deletions(-) diff --git a/dlls/dmloader/container.c b/dlls/dmloader/container.c index 075843ad322..005f0d7e9ed 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 10ba0bce93e..0d274394aad 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 40af340ccf5..fec35cfbff1 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 a8505003c7c..94bb9ddf1bd 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 25f3198d2bc..9ea31ab32a6 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); +/* 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); +} + +void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc) +{ + 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)) -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)); -} - 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 4a721cc1521..d347020691c 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)); +}