Thanks, Why doesn't this get committed to the main tree? It'd help developers, and wouldn't hurt anyone else. If they don't want it they can just not set the environment variable.
Andrei
On Tue, 2004-06-29 at 09:59, Mike Hearn wrote:
On Tue, 29 Jun 2004 12:02:26 -0400, Andrei Barbu wrote:
Is there another way, possibly existing, to do this? Is this a really bad idea?
I already implemented this some time ago. You'll need to use -p1 to patch. To use it set WINEDELAY=1 in the environment. You can then toggle tracing with the F12 key - it starts as being off.
thanks -mike
--- orig/dlls/ntdll/debugtools.c +++ mod/dlls/ntdll/debugtools.c @@ -244,6 +244,7 @@ return res; }
/***********************************************************************
NTDLL_dbg_vprintf
*/ @@ -300,7 +301,7 @@ ret += wine_dbg_printf( "%s:%s:%s ", classes[cls], channel + 1, function ); } if (format)
ret += NTDLL_dbg_vprintf( format, args );
return ret;ret += __wine_dbg_vprintf( format, args );
}
@@ -313,5 +314,6 @@ __wine_dbgstr_wn = NTDLL_dbgstr_wn; __wine_dbg_vsprintf = NTDLL_dbg_vsprintf; __wine_dbg_vprintf = NTDLL_dbg_vprintf;
- if (getenv("WINEDELAY")) wine_dbg_toggle_block(); __wine_dbg_vlog = NTDLL_dbg_vlog;
} --- orig/dlls/x11drv/keyboard.c +++ mod/dlls/x11drv/keyboard.c @@ -1171,6 +1171,11 @@ KEYBOARD_GenerateMsg( VK_CAPITAL, 0x3A, event->type, event_time ); TRACE("State after : %#.2x\n",pKeyStateTable[vkey]); break;
- case VK_F12:
if ((event->type == KeyPress) && getenv("WINEDELAY")) {
- /* we get this event repeatedly if we hold down the key (keyboard repeat) */
- wine_dbg_toggle_block();
default: /* Adjust the NUMLOCK state if it has been changed outside wine */ if (!(pKeyStateTable[VK_NUMLOCK] & 0x01) != !(event->state & NumLockMask))}
--- orig/include/wine/debug.h +++ mod/include/wine/debug.h @@ -145,6 +145,7 @@ extern int wine_dbg_printf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2); extern int wine_dbg_log( unsigned int cls, const char *ch, const char *func, const char *format, ... ) __WINE_PRINTF_ATTR(4,5); +extern void wine_dbg_toggle_block();
static inline const char *wine_dbgstr_guid( const GUID *id ) { --- orig/libs/wine/debug.c +++ mod/libs/wine/debug.c @@ -54,6 +54,9 @@
static const char * const debug_classes[] = { "fixme", "err", "warn", "trace" };
+static int disabled_dbg_vprintf( const char *format, va_list args ); +static void* old_vprintf = &disabled_dbg_vprintf; /* used when blocking debug output */
static int cmp_name( const void *p1, const void *p2 ) { const char *name = p1; @@ -140,6 +143,16 @@ } }
+static int disabled_dbg_vprintf( const char *format, va_list args ) {
- return 0;
+}
+/* prevents printing of debug messages temporarily */ +void wine_dbg_toggle_block() {
- fprintf(stderr, "wine: toggling tracing\n");
- old_vprintf = interlocked_xchg_ptr((void**)&__wine_dbg_vprintf, old_vprintf); /* fixme: is this thread safe? */
+}
/* parse a set of debugging option specifications and add them to the option list */ int wine_dbg_parse_options( const char *str ) { @@ -412,3 +425,4 @@ { return __wine_dbgstr_wn( s, -1 ); }
--- orig/libs/wine/wine.def +++ mod/libs/wine/wine.def @@ -9,6 +9,7 @@ __wine_dbgstr_an __wine_dbgstr_wn __wine_dll_register
- wine_dbg_toggle_block __wine_main_argc __wine_main_argv __wine_main_environ
--- orig/libs/wine/wine.map +++ mod/libs/wine/wine.map @@ -6,6 +6,7 @@ __wine_dbg_vlog; __wine_dbg_vprintf; __wine_dbg_vsprintf;
- wine_dbg_toggle_block; __wine_dbgstr_an; __wine_dbgstr_wn; __wine_dll_register;