windows-nt/Source/XPSP1/NT/multimedia/media/mciwave/debug.c
2020-09-26 16:20:57 +08:00

160 lines
3.4 KiB
C

/* Copyright (c) 1991-1994 Microsoft Corporation */
/*
debug.c
Support code for the dprintf routines.
Note that all of this is conditional on the DBG flag
*/
#define NOGDICAPMASKS
#define NOVIRTUALKEYCODES
#define NOWINSTYLES
#define NOSYSMETRICS
#define NOMENUS
#define NOICONS
#define NOKEYSTATES
#define NOSYSCOMMANDS
#define NORASTEROPS
#define NOSHOWWINDOW
#define OEMRESOURCE
#define NOATOM
#define NOCLIPBOARD
#define NOCOLOR
#define NOCTLMGR
#define NODRAWTEXT
#define NOGDI
#define NOKERNEL
#define NONLS
#define NOMB
#define NOMEMMGR
#define NOMETAFILE
#define NOMINMAX
#define NOOPENFILE
#define NOSCROLL
#define NOTEXTMETRIC
#define NOWH
#define NOWINOFFSETS
#define NOCOMM
#define NOKANJI
#define NOHELP
#define NOPROFILER
#define NODEFERWINDOWPOS
#define NOMMDRV
#define MMNOMMIO
#define MMNOJOY
#define MMNOTIMER
#define MMNOAUX
#define MMNOMIDI
#define MMNOWAVE
#include <windows.h>
#include "mciwave.h" // private include file
#include <stdarg.h>
#if DBG
#ifdef MEDIA_DEBUG
int mciwaveDebugLevel = 1;
#else
int mciwaveDebugLevel = 1;
#endif
/***************************************************************************
@doc INTERNAL
@api void | mciwaveDbgOut | This function sends output to the current
debug output device.
@parm LPSTR | lpszFormat | Pointer to a printf style format string.
@parm ??? | ... | Args.
@rdesc There is no return value.
****************************************************************************/
void mciwaveDbgOut(LPSTR lpszFormat, ...)
{
char buf[256];
UINT n;
va_list va;
UINT offset;
// If the last character is a comma, do not add the newline
// If the first character is a period, do not add thread/module info
n = wsprintf(buf, "MCIWAVE: (tid %x) ", GetCurrentThreadId());
offset = n;
va_start(va, lpszFormat);
n += vsprintf(buf+n, lpszFormat, va);
if (*(buf+offset) == '.') {
offset++;
} else {
offset = 0;
}
va_end(va);
if (',' != buf[n-1]) {
buf[n++] = '\n';
}
buf[n] = 0;
OutputDebugString(buf+offset);
Sleep(10); // let terminal catch up
}
void mciwaveInitDebugLevel(void)
{
UINT level = GetProfileInt("MMDEBUG", "MCIWAVE", 99);
if (level != 99) {
mciwaveDebugLevel = level;
}
}
/***************************************************************************
@doc INTERNAL
@api void | dDbgAssert | This function prints an assertion message.
@parm LPSTR | exp | Pointer to the expression string.
@parm LPSTR | file | Pointer to the file name.
@parm int | line | The line number.
@rdesc There is no return value.
****************************************************************************/
void dDbgAssert(LPSTR exp, LPSTR file, int line)
{
dprintf1(("Assertion failure:"));
dprintf1((" Exp: %s", exp));
dprintf1((" File: %s, line: %d", file, line));
DebugBreak();
}
#endif // DBG
/**************************************************************************
@doc INTERNAL
@api void | mciwaveSetDebugLevel | Set the current debug level
@parm int | iLevel | The new level to set
@rdesc There is no return value
**************************************************************************/
void mciwaveSetDebugLevel(int level)
{
#if DBG
mciwaveDebugLevel = level;
dprintf(("debug level set to %d", mciwaveDebugLevel));
#endif
}