configure.in gdk/gdk.[ch] gdk/gdkcc.c gdk/gdkglobals.c

Thu Feb 19 01:11:48 1998  Owen Taylor  <owt1@cornell.edu>

	* configure.in         gdk/gdk.[ch]         gdk/gdkcc.c
	  gdk/gdkglobals.c     gdk/gdkinputcommon.h gdk/gdkprivate.h
	  gdk/gdkvisual.c      glib/configure.in    glib/glib.h
	  glib/gutils.c        gtk/Makefile.am      gtk/gtkmain.c
	  gtk/gtkobject.[ch]   gtk/gtkdebug.h       docs/debugging.txt

	New system for controlling debugging:

	* --enable-debug=[no/yes/minimum]
	* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
	* G_NO_CHECK_CASTS to control cast checking
	* G_ENABLE_DEBUG enables run time checking which controls:
	    Object tracing
	    Showing events
	    Miscellaneous g_print's in GDK
	  And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
        * debug_level and show_events are gone from GTK

	See docs/debugging.txt for details.

	And some fixups to the configure.in's so '-g' can be
	overriden on the command line for --enable-debug
This commit is contained in:
Owen Taylor 1998-02-19 06:21:27 +00:00 committed by Owen Taylor
parent 3d4cc2f904
commit fc7e845c8f
28 changed files with 873 additions and 488 deletions

View File

@ -1,3 +1,28 @@
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org> Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h: * gtk/gtknotebook.h:

View File

@ -1,3 +1,28 @@
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org> Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h: * gtk/gtknotebook.h:

View File

@ -1,3 +1,28 @@
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org> Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h: * gtk/gtknotebook.h:

View File

@ -1,3 +1,28 @@
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org> Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h: * gtk/gtknotebook.h:

View File

@ -1,3 +1,28 @@
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org> Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h: * gtk/gtknotebook.h:

View File

@ -1,3 +1,28 @@
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org> Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h: * gtk/gtknotebook.h:

View File

@ -1,3 +1,28 @@
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org> Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h: * gtk/gtknotebook.h:

View File

@ -35,22 +35,24 @@ AC_CANONICAL_HOST
AC_ARG_ENABLE(shm, [ --enable-shm support shared memory if available [default=yes]], AC_ARG_ENABLE(shm, [ --enable-shm support shared memory if available [default=yes]],
echo $enable_shm, enable_shm="yes") echo $enable_shm, enable_shm="yes")
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]], AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=minimum]],,enable_debug=minimum)
if test "x$enable_debug" = "xyes"; then
DEBUGFLAG="-g"
fi)
AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]], AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
, enable_ansi=no) , enable_ansi=no)
AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]], AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],
echo $enable_xim, enable_xim="yes") echo $enable_xim, enable_xim="yes")
AC_ARG_WITH(locale, [ --with-locale=LOCALE locale name you want to use ]) AC_ARG_WITH(locale, [ --with-locale=LOCALE locale name you want to use ])
AC_ARG_WITH(xinput, [ --with-xinput[=no/gxi/xfree] support XInput ]) AC_ARG_WITH(xinput, [ --with-xinput=[no/gxi/xfree] support XInput ])
if test -n "$DEBUGFLAG"; then if test "x$enable_debug" = "xyes"; then
test "$cflags_set" = set || CFLAGS="$DEBUGFLAG" test "$cflags_set" = set || CFLAGS="-g"
CFLAGS="$CFLAGS -DG_ENABLE_DEBUG"
else else
CFLAGS="$CFLAGS -DNDEBUG" if test "x$enable_debug" = "xno"; then
CFLAGS="$CFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DGTK_NO_CHECK_CASTS"
else
CFLAGS="$CFLAGS -DGTK_NO_CHECK_CASTS"
fi
fi fi
# Build time sanity check... # Build time sanity check...

83
docs/debugging.txt Normal file
View File

@ -0,0 +1,83 @@
The GLIB, GDK, and GTK libraries have extensive support for
debugging the library and your programs.
The amount of debugging being done can be determined both
at run time and compile time.
COMPILE TIME OPTIONS
--------------------
At compile time, the amount of debugging support included is
determined by four macros:
G_ENABLE_DEBUG
If set, enable support for runtime checking.
G_DISABLE_ASSERT
If set, disable g_assert macros
G_DISABLE_CHECKS
If set, disable the g_return_if_fail and g_return_val_if_fail macros
GTK_NO_CHECK_CASTS
If set, don't check casts between different object types
Whether these macros are defined is controlled at configuration
time by the --enable-debug option.
--enable-debug=minimum [default]
Enable only inexpensive sanity checking
sets GTK_NO_CHECK_CASTS
--enable-debug=yes
Enable all debugging support
sets G_ENABLE_DEBUG
--enable-debug=no (or --disable-debug)
Disable all debugging support (fastest)
sets G_DISABLE_ASSERT, G_DISABLE_CHECKS, and GTK_NO_CHECK_CASTS
RUN TIME OPTIONS
----------------
At run time, if GTK+ was compiled with debugging enabled,
different types of debugging information can be printed
out by setting the --gtk-debug and --gdk-debug command line
options, or the GTK_DEBUG and GDK_DEBUG environment
variables. (The command line options override the environment
variables)
Each of these can either be the special value ALL,
or a sequence of ':' separated options. (Note, case is
significant)
As noted below, some of these are useful in application
debugging, but most are only interested to those debugging
the libraries
GTK_DEBUG
---------
Application relevant options:
'objects' - Trace the creation and destruction of objects, print
out a summary at program termination
Options only interesting to library maintainers:
GDK_DEBUG
---------
Application relevant options:
'events' - Show all events received by GTK
Options only interesting to library maintainers:
'misc' - Miscellaneous information
'dnd' - Information about drag-and-drop
'color-context' - Information about the internal workings of
GdkColorContext
'xim' - Information about X Input Method support

317
gdk/gdk.c
View File

@ -17,8 +17,6 @@
*/ */
#include "../config.h" #include "../config.h"
/* #define DEBUG_DND 1 */ /* Shouldn't be needed much these days */
/* If you don't want to use gdk's signal handlers define this */ /* If you don't want to use gdk's signal handlers define this */
/* #define I_NEED_TO_ACTUALLY_DEBUG_MY_PROGRAMS 1 */ /* #define I_NEED_TO_ACTUALLY_DEBUG_MY_PROGRAMS 1 */
@ -227,6 +225,15 @@ static GList *putback_events = NULL;
static gulong base_id; static gulong base_id;
static gint autorepeat; static gint autorepeat;
#ifdef G_ENABLE_DEBUG
static GDebugKey gdk_debug_keys[] = {
{"events", GDK_DEBUG_EVENTS},
{"misc", GDK_DEBUG_MISC},
{"dnd", GDK_DEBUG_DND},
{"color-context", GDK_DEBUG_COLOR_CONTEXT},
{"xim", GDK_DEBUG_XIM}
};
#endif /* G_ENABLE_DEBUG */
/* /*
*-------------------------------------------------------------- *--------------------------------------------------------------
@ -260,6 +267,8 @@ gdk_init (int *argc,
int argc_orig = *argc; int argc_orig = *argc;
char **argv_orig; char **argv_orig;
gboolean debug_set = FALSE;
argv_orig = malloc ((argc_orig + 1) * sizeof (char*)); argv_orig = malloc ((argc_orig + 1) * sizeof (char*));
for (i = 0; i < argc_orig; i++) for (i = 0; i < argc_orig; i++)
argv_orig[i] = g_strdup ((*argv)[i]); argv_orig[i] = g_strdup ((*argv)[i]);
@ -291,11 +300,30 @@ gdk_init (int *argc,
for (i = 1; i < *argc;) for (i = 1; i < *argc;)
{ {
if (strcmp ("--display", (*argv)[i]) == 0) if ((*argv)[i] == NULL)
continue;
#ifdef G_ENABLE_DEBUG
if (strcmp ("--gdk-debug", (*argv)[i]) == 0)
{ {
(*argv)[i] = NULL; (*argv)[i] = NULL;
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{
gdk_debug_flags = g_parse_debug_string ((*argv)[i+1],
gdk_debug_keys,
sizeof(gdk_debug_keys) / sizeof(GDebugKey));
debug_set = TRUE;
(*argv)[i + 1] = NULL;
i += 1;
}
}
#endif G_ENABLE_DEBUG
else if (strcmp ("--display", (*argv)[i]) == 0)
{
(*argv)[i] = NULL;
if ((i + 1) < *argc && (*argv)[i + 1])
{ {
gdk_display_name = g_strdup ((*argv)[i + 1]); gdk_display_name = g_strdup ((*argv)[i + 1]);
(*argv)[i + 1] = NULL; (*argv)[i + 1] = NULL;
@ -307,33 +335,14 @@ gdk_init (int *argc,
(*argv)[i] = NULL; (*argv)[i] = NULL;
synchronize = TRUE; synchronize = TRUE;
} }
else if (strcmp ("--show-events", (*argv)[i]) == 0)
{
(*argv)[i] = NULL;
gdk_show_events = TRUE;
}
else if (strcmp ("--no-show-events", (*argv)[i]) == 0)
{
(*argv)[i] = NULL;
gdk_show_events = FALSE;
}
else if (strcmp ("--no-xshm", (*argv)[i]) == 0) else if (strcmp ("--no-xshm", (*argv)[i]) == 0)
{ {
(*argv)[i] = NULL; (*argv)[i] = NULL;
gdk_use_xshm = FALSE; gdk_use_xshm = FALSE;
} }
else if (strcmp ("--debug-level", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
{
(*argv)[i++] = NULL;
gdk_debug_level = atoi ((*argv)[i]);
(*argv)[i] = NULL;
}
}
else if (strcmp ("--name", (*argv)[i]) == 0) else if (strcmp ("--name", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_progname = (*argv)[i]; gdk_progname = (*argv)[i];
@ -342,7 +351,7 @@ gdk_init (int *argc,
} }
else if (strcmp ("--class", (*argv)[i]) == 0) else if (strcmp ("--class", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_progclass = (*argv)[i]; gdk_progclass = (*argv)[i];
@ -352,7 +361,7 @@ gdk_init (int *argc,
#ifdef XINPUT_GXI #ifdef XINPUT_GXI
else if (strcmp ("--gxid_host", (*argv)[i]) == 0) else if (strcmp ("--gxid_host", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_input_gxid_host = ((*argv)[i]); gdk_input_gxid_host = ((*argv)[i]);
@ -361,7 +370,7 @@ gdk_init (int *argc,
} }
else if (strcmp ("--gxid_port", (*argv)[i]) == 0) else if (strcmp ("--gxid_port", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_input_gxid_port = atoi ((*argv)[i]); gdk_input_gxid_port = atoi ((*argv)[i]);
@ -372,7 +381,7 @@ gdk_init (int *argc,
#ifdef USE_XIM #ifdef USE_XIM
else if (strcmp ("--xim-preedit", (*argv)[i]) == 0) else if (strcmp ("--xim-preedit", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0) if (strcmp ("none", (*argv)[i]) == 0)
@ -389,7 +398,7 @@ gdk_init (int *argc,
} }
else if (strcmp ("--xim-status", (*argv)[i]) == 0) else if (strcmp ("--xim-status", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0) if (strcmp ("none", (*argv)[i]) == 0)
@ -427,6 +436,15 @@ gdk_init (int *argc,
gdk_progname = "<unknown>"; gdk_progname = "<unknown>";
} }
if (!debug_set)
{
gchar *debug_string = getenv("GDK_DEBUG");
if (debug_string != NULL)
gdk_debug_flags = g_parse_debug_string (debug_string,
gdk_debug_keys,
sizeof(gdk_debug_keys) / sizeof(GDebugKey));
}
gdk_display = XOpenDisplay (gdk_display_name); gdk_display = XOpenDisplay (gdk_display_name);
if (!gdk_display) if (!gdk_display)
{ {
@ -440,12 +458,11 @@ gdk_init (int *argc,
*/ */
/* base_id = RESOURCE_BASE; */ /* base_id = RESOURCE_BASE; */
base_id = 0; base_id = 0;
if (gdk_show_events) GDK_NOTE (EVENTS, g_print ("base id: %lu\n", base_id));
g_print ("base id: %lu\n", base_id);
connection_number = ConnectionNumber (gdk_display); connection_number = ConnectionNumber (gdk_display);
if (gdk_debug_level >= 1) GDK_NOTE (MISC,
g_print ("connection number: %d\n", connection_number); g_print ("connection number: %d\n", connection_number));
if (synchronize) if (synchronize)
XSynchronize (gdk_display, True); XSynchronize (gdk_display, True);
@ -927,31 +944,6 @@ gdk_event_free (GdkEvent *event)
g_mem_chunk_free (event_chunk, event); g_mem_chunk_free (event_chunk, event);
} }
/*
*--------------------------------------------------------------
* gdk_set_debug_level
*
* Sets the debugging level.
*
* Arguments:
* "level" is the new debugging level.
*
* Results:
*
* Side effects:
* Other function calls to "gdk" use the debugging
* level to determine what kind of debugging information
* to print out.
*
*--------------------------------------------------------------
*/
void
gdk_set_debug_level (int level)
{
gdk_debug_level = level;
}
/* /*
*-------------------------------------------------------------- *--------------------------------------------------------------
* gdk_set_show_events * gdk_set_show_events
@ -975,7 +967,10 @@ gdk_set_debug_level (int level)
void void
gdk_set_show_events (int show_events) gdk_set_show_events (int show_events)
{ {
gdk_show_events = show_events; if (show_events)
gdk_debug_flags |= GDK_DEBUG_EVENTS;
else
gdk_debug_flags &= ~GDK_DEBUG_EVENTS;
} }
void void
@ -984,16 +979,10 @@ gdk_set_use_xshm (gint use_xshm)
gdk_use_xshm = use_xshm; gdk_use_xshm = use_xshm;
} }
gint
gdk_get_debug_level ()
{
return gdk_debug_level;
}
gint gint
gdk_get_show_events () gdk_get_show_events ()
{ {
return gdk_show_events; return gdk_debug_flags & GDK_DEBUG_EVENTS;
} }
gint gint
@ -1750,8 +1739,8 @@ gdk_event_translate (GdkEvent *event,
if (status == XBufferOverflow) if (status == XBufferOverflow)
{ /* retry */ { /* retry */
/* alloc adequate size of buffer */ /* alloc adequate size of buffer */
if (gdk_debug_level >= 1) GDK_NOTE (XIM,
g_print("XIM: overflow (required %i)\n", charcount); g_print("XIM: overflow (required %i)\n", charcount));
while (buf_len <= charcount) while (buf_len <= charcount)
buf_len *= 2; buf_len *= 2;
@ -1784,7 +1773,8 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) #ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & GDK_DEBUG_EVENTS)
{ {
g_print ("key press:\twindow: %ld key: %12s %d\n", g_print ("key press:\twindow: %ld key: %12s %d\n",
xevent->xkey.window - base_id, xevent->xkey.window - base_id,
@ -1794,6 +1784,7 @@ gdk_event_translate (GdkEvent *event,
g_print ("\t\tlength: %4d string: \"%s\"\n", g_print ("\t\tlength: %4d string: \"%s\"\n",
charcount, buf); charcount, buf);
} }
#endif /* G_ENABLE_DEBUG */
event->key.type = GDK_KEY_PRESS; event->key.type = GDK_KEY_PRESS;
event->key.window = window; event->key.window = window;
@ -1818,11 +1809,11 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("key release:\t\twindow: %ld key: %12s %d\n", g_print ("key release:\t\twindow: %ld key: %12s %d\n",
xevent->xkey.window - base_id, xevent->xkey.window - base_id,
XKeysymToString (event->key.keyval), XKeysymToString (event->key.keyval),
event->key.keyval); event->key.keyval));
event->key.type = GDK_KEY_RELEASE; event->key.type = GDK_KEY_RELEASE;
event->key.window = window; event->key.window = window;
@ -1837,12 +1828,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonPress: case ButtonPress:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("button press[%d]:\t\twindow: %ld x,y: %d %d button: %d\n", g_print ("button press[%d]:\t\twindow: %ld x,y: %d %d button: %d\n",
window_private?window_private->dnd_drag_enabled:0, window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id, xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y, xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button); xevent->xbutton.button));
if (window_private && if (window_private &&
(window_private->extension_events != 0) && (window_private->extension_events != 0) &&
@ -1941,12 +1932,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonRelease: case ButtonRelease:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("button release[%d]:\twindow: %ld x,y: %d %d button: %d\n", g_print ("button release[%d]:\twindow: %ld x,y: %d %d button: %d\n",
window_private?window_private->dnd_drag_enabled:0, window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id, xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y, xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button); xevent->xbutton.button));
if (window_private && if (window_private &&
(window_private->extension_events != 0) && (window_private->extension_events != 0) &&
@ -2018,12 +2009,12 @@ gdk_event_translate (GdkEvent *event,
case MotionNotify: case MotionNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("motion notify:\t\twindow: %ld x,y: %d %d hint: %s d:%d r%d\n", g_print ("motion notify:\t\twindow: %ld x,y: %d %d hint: %s d:%d r%d\n",
xevent->xmotion.window - base_id, xevent->xmotion.window - base_id,
xevent->xmotion.x, xevent->xmotion.y, xevent->xmotion.x, xevent->xmotion.y,
(xevent->xmotion.is_hint) ? "true" : "false", (xevent->xmotion.is_hint) ? "true" : "false",
dnd_drag_perhaps, gdk_dnd.drag_really); dnd_drag_perhaps, gdk_dnd.drag_really));
if (window_private && if (window_private &&
(window_private->extension_events != 0) && (window_private->extension_events != 0) &&
@ -2075,10 +2066,9 @@ gdk_event_translate (GdkEvent *event,
x, y, &x, &y, &twin); x, y, &x, &y, &twin);
} }
} }
#if defined(DEBUG_DND) /* && defined(DEBUG_DND_MORE_DETAILS) */ GDK_NOTE (DND,
g_print("Drag is now in window %#x, lastwin was %#x, ddc = %#x\n", g_print("Drag is now in window %#lx, lastwin was %#lx, ddc = %#lx\n",
curwin, lastwin, dnd_drag_curwin); curwin, lastwin, dnd_drag_curwin));
#endif
if(curwin != dnd_drag_curwin && curwin != lastwin) if(curwin != dnd_drag_curwin && curwin != lastwin)
{ {
/* We have left one window and entered another /* We have left one window and entered another
@ -2090,10 +2080,10 @@ gdk_event_translate (GdkEvent *event,
dnd_drag_dropzone.x = dnd_drag_dropzone.y = 0; dnd_drag_dropzone.x = dnd_drag_dropzone.y = 0;
dnd_drag_dropzone.width = dnd_drag_dropzone.height = 0; dnd_drag_dropzone.width = dnd_drag_dropzone.height = 0;
dnd_drag_target = None; dnd_drag_target = None;
#ifdef DEBUG_DND GDK_NOTE (DND,
g_print("curwin = %#x, lastwin = %#x, dnd_drag_curwin = %#x\n", g_print("curwin = %#lx, lastwin = %#lx, dnd_drag_curwin = %#lx\n",
curwin, lastwin, dnd_drag_curwin); curwin, lastwin, dnd_drag_curwin));
#endif
XChangeActivePointerGrab(gdk_display, XChangeActivePointerGrab(gdk_display,
ButtonMotionMask | ButtonMotionMask |
ButtonPressMask | ButtonReleaseMask, ButtonPressMask | ButtonReleaseMask,
@ -2139,13 +2129,11 @@ gdk_event_translate (GdkEvent *event,
case EnterNotify: case EnterNotify:
/* Print debugging info. /* Print debugging info.
*/ */
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS)) GDK_NOTE (EVENTS,
if (gdk_show_events)
#endif
g_print ("enter notify:\t\twindow: %ld detail: %d subwin: %ld\n", g_print ("enter notify:\t\twindow: %ld detail: %d subwin: %ld\n",
xevent->xcrossing.window - base_id, xevent->xcrossing.window - base_id,
xevent->xcrossing.detail, xevent->xcrossing.detail,
xevent->xcrossing.subwindow - base_id); xevent->xcrossing.subwindow - base_id));
/* Tell XInput stuff about it if appropriate */ /* Tell XInput stuff about it if appropriate */
if (window_private && if (window_private &&
@ -2188,21 +2176,20 @@ gdk_event_translate (GdkEvent *event,
break; break;
} }
#ifdef DEBUG_DND if ((gdk_debug_flags & GDK_DEBUG_DND) & dnd_drag_perhaps)
if(dnd_drag_perhaps) {
{ g_print("We may[%d] have a drag into %#lx = %#lx\n",
g_print("We may[%d] have a drag into %#x = %#x\n", gdk_dnd.drag_really,
gdk_dnd.drag_really, xevent->xcrossing.window, real_sw->xwindow);
xevent->xcrossing.window, real_sw->xwindow); }
}
#endif
if (dnd_drag_perhaps && gdk_dnd.drag_really && if (dnd_drag_perhaps && gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow)) (xevent->xcrossing.window == real_sw->xwindow))
{ {
gdk_dnd.drag_really = 0; gdk_dnd.drag_really = 0;
#ifdef DEBUG_DND
g_print("Ungrabbed\n"); GDK_NOTE (DND, g_print("Ungrabbed\n"));
#endif
gdk_dnd.drag_numwindows = 0; gdk_dnd.drag_numwindows = 0;
g_free(gdk_dnd.drag_startwindows); g_free(gdk_dnd.drag_startwindows);
gdk_dnd.drag_startwindows = NULL; gdk_dnd.drag_startwindows = NULL;
@ -2217,12 +2204,10 @@ gdk_event_translate (GdkEvent *event,
case LeaveNotify: case LeaveNotify:
/* Print debugging info. /* Print debugging info.
*/ */
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS)) GDK_NOTE (EVENTS,
if (gdk_show_events)
#endif
g_print ("leave notify:\t\twindow: %ld detail: %d subwin: %ld\n", g_print ("leave notify:\t\twindow: %ld detail: %d subwin: %ld\n",
xevent->xcrossing.window - base_id, xevent->xcrossing.window - base_id,
xevent->xcrossing.detail, xevent->xcrossing.subwindow - base_id); xevent->xcrossing.detail, xevent->xcrossing.subwindow - base_id));
event->crossing.type = GDK_LEAVE_NOTIFY; event->crossing.type = GDK_LEAVE_NOTIFY;
event->crossing.window = window; event->crossing.window = window;
@ -2258,14 +2243,12 @@ gdk_event_translate (GdkEvent *event,
event->crossing.detail = GDK_NOTIFY_UNKNOWN; event->crossing.detail = GDK_NOTIFY_UNKNOWN;
break; break;
} }
#ifdef DEBUG_DND if ((gdk_debug_flags & GDK_DEBUG_DND) & dnd_drag_perhaps)
if(dnd_drag_perhaps)
{ {
g_print("We may[%d] have a drag out of %#x = %#x\n", g_print("We may[%d] have a drag out of %#lx = %#lx\n",
gdk_dnd.drag_really, gdk_dnd.drag_really,
xevent->xcrossing.window, real_sw->xwindow); xevent->xcrossing.window, real_sw->xwindow);
} }
#endif
if (dnd_drag_perhaps && !gdk_dnd.drag_really && if (dnd_drag_perhaps && !gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow)) (xevent->xcrossing.window == real_sw->xwindow))
{ {
@ -2295,10 +2278,10 @@ gdk_event_translate (GdkEvent *event,
case NotifyNonlinear: case NotifyNonlinear:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("focus %s:\t\twindow: %ld\n", g_print ("focus %s:\t\twindow: %ld\n",
(xevent->xany.type == FocusIn) ? "in" : "out", (xevent->xany.type == FocusIn) ? "in" : "out",
xevent->xfocus.window - base_id); xevent->xfocus.window - base_id));
event->focus_change.type = GDK_FOCUS_CHANGE; event->focus_change.type = GDK_FOCUS_CHANGE;
event->focus_change.window = window; event->focus_change.window = window;
@ -2314,8 +2297,8 @@ gdk_event_translate (GdkEvent *event,
case KeymapNotify: case KeymapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("keymap notify\n"); g_print ("keymap notify\n"));
/* Not currently handled */ /* Not currently handled */
break; break;
@ -2323,11 +2306,11 @@ gdk_event_translate (GdkEvent *event,
case Expose: case Expose:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d\n", g_print ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d\n",
xevent->xexpose.window - base_id, xevent->xexpose.count, xevent->xexpose.window - base_id, xevent->xexpose.count,
xevent->xexpose.x, xevent->xexpose.y, xevent->xexpose.x, xevent->xexpose.y,
xevent->xexpose.width, xevent->xexpose.height); xevent->xexpose.width, xevent->xexpose.height));
event->expose.type = GDK_EXPOSE; event->expose.type = GDK_EXPOSE;
event->expose.window = window; event->expose.window = window;
@ -2343,9 +2326,9 @@ gdk_event_translate (GdkEvent *event,
case GraphicsExpose: case GraphicsExpose:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("graphics expose:\tdrawable: %ld\n", g_print ("graphics expose:\tdrawable: %ld\n",
xevent->xgraphicsexpose.drawable - base_id); xevent->xgraphicsexpose.drawable - base_id));
event->expose.type = GDK_EXPOSE; event->expose.type = GDK_EXPOSE;
event->expose.window = window; event->expose.window = window;
@ -2361,9 +2344,9 @@ gdk_event_translate (GdkEvent *event,
case NoExpose: case NoExpose:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("no expose:\t\tdrawable: %ld\n", g_print ("no expose:\t\tdrawable: %ld\n",
xevent->xnoexpose.drawable - base_id); xevent->xnoexpose.drawable - base_id));
event->no_expose.type = GDK_NO_EXPOSE; event->no_expose.type = GDK_NO_EXPOSE;
event->no_expose.window = window; event->no_expose.window = window;
@ -2374,7 +2357,7 @@ gdk_event_translate (GdkEvent *event,
case VisibilityNotify: case VisibilityNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) if (gdk_debug_flags & GDK_DEBUG_EVENTS)
switch (xevent->xvisibility.state) switch (xevent->xvisibility.state)
{ {
case VisibilityFullyObscured: case VisibilityFullyObscured:
@ -2419,9 +2402,9 @@ gdk_event_translate (GdkEvent *event,
case DestroyNotify: case DestroyNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("destroy notify:\twindow: %ld\n", g_print ("destroy notify:\twindow: %ld\n",
xevent->xdestroywindow.window - base_id); xevent->xdestroywindow.window - base_id));
event->any.type = GDK_DESTROY; event->any.type = GDK_DESTROY;
event->any.window = window; event->any.window = window;
@ -2434,9 +2417,9 @@ gdk_event_translate (GdkEvent *event,
case UnmapNotify: case UnmapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("unmap notify:\t\twindow: %ld\n", g_print ("unmap notify:\t\twindow: %ld\n",
xevent->xmap.window - base_id); xevent->xmap.window - base_id));
event->any.type = GDK_UNMAP; event->any.type = GDK_UNMAP;
event->any.window = window; event->any.window = window;
@ -2450,9 +2433,9 @@ gdk_event_translate (GdkEvent *event,
case MapNotify: case MapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("map notify:\t\twindow: %ld\n", g_print ("map notify:\t\twindow: %ld\n",
xevent->xmap.window - base_id); xevent->xmap.window - base_id));
event->any.type = GDK_MAP; event->any.type = GDK_MAP;
event->any.window = window; event->any.window = window;
@ -2463,9 +2446,9 @@ gdk_event_translate (GdkEvent *event,
case ReparentNotify: case ReparentNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("reparent notify:\twindow: %ld\n", g_print ("reparent notify:\twindow: %ld\n",
xevent->xreparent.window - base_id); xevent->xreparent.window - base_id));
/* Not currently handled */ /* Not currently handled */
break; break;
@ -2478,7 +2461,7 @@ gdk_event_translate (GdkEvent *event,
ConfigureNotify, xevent)) ConfigureNotify, xevent))
/*XSync (gdk_display, 0)*/; /*XSync (gdk_display, 0)*/;
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d\n", g_print ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d\n",
xevent->xconfigure.window - base_id, xevent->xconfigure.window - base_id,
xevent->xconfigure.x, xevent->xconfigure.x,
@ -2487,7 +2470,7 @@ gdk_event_translate (GdkEvent *event,
xevent->xconfigure.height, xevent->xconfigure.height,
xevent->xconfigure.border_width, xevent->xconfigure.border_width,
xevent->xconfigure.above - base_id, xevent->xconfigure.above - base_id,
xevent->xconfigure.override_redirect); xevent->xconfigure.override_redirect));
if (window_private) if (window_private)
{ {
@ -2540,9 +2523,9 @@ gdk_event_translate (GdkEvent *event,
case PropertyNotify: case PropertyNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("property notify:\twindow: %ld\n", g_print ("property notify:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->property.type = GDK_PROPERTY_NOTIFY; event->property.type = GDK_PROPERTY_NOTIFY;
event->property.window = window; event->property.window = window;
@ -2554,9 +2537,9 @@ gdk_event_translate (GdkEvent *event,
break; break;
case SelectionClear: case SelectionClear:
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("selection clear:\twindow: %ld\n", g_print ("selection clear:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_CLEAR; event->selection.type = GDK_SELECTION_CLEAR;
event->selection.window = window; event->selection.window = window;
@ -2567,9 +2550,9 @@ gdk_event_translate (GdkEvent *event,
break; break;
case SelectionRequest: case SelectionRequest:
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("selection request:\twindow: %ld\n", g_print ("selection request:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_REQUEST; event->selection.type = GDK_SELECTION_REQUEST;
event->selection.window = window; event->selection.window = window;
@ -2583,9 +2566,9 @@ gdk_event_translate (GdkEvent *event,
break; break;
case SelectionNotify: case SelectionNotify:
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("selection notify:\twindow: %ld\n", g_print ("selection notify:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_NOTIFY; event->selection.type = GDK_SELECTION_NOTIFY;
@ -2601,9 +2584,9 @@ gdk_event_translate (GdkEvent *event,
case ColormapNotify: case ColormapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("colormap notify:\twindow: %ld\n", g_print ("colormap notify:\twindow: %ld\n",
xevent->xcolormap.window - base_id); xevent->xcolormap.window - base_id));
/* Not currently handled */ /* Not currently handled */
break; break;
@ -2611,9 +2594,9 @@ gdk_event_translate (GdkEvent *event,
case ClientMessage: case ClientMessage:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("client message:\twindow: %ld\n", g_print ("client message:\twindow: %ld\n",
xevent->xclient.window - base_id); xevent->xclient.window - base_id));
/* Client messages are the means of the window manager /* Client messages are the means of the window manager
* communicating with a program. We'll first check to * communicating with a program. We'll first check to
@ -2635,9 +2618,9 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("delete window:\t\twindow: %ld\n", g_print ("delete window:\t\twindow: %ld\n",
xevent->xclient.window - base_id); xevent->xclient.window - base_id));
event->any.type = GDK_DELETE; event->any.type = GDK_DELETE;
event->any.window = window; event->any.window = window;
@ -2653,11 +2636,9 @@ gdk_event_translate (GdkEvent *event,
Atom reptype = 0; Atom reptype = 0;
event->dropenter.u.allflags = xevent->xclient.data.l[1]; event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifndef DEBUG_DND
if (gdk_show_events) GDK_NOTE (DND, g_print ("GDK_DROP_ENTER [%d][%d]\n",
#endif window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply));
g_print ("GDK_DROP_ENTER [%d][%d]\n",
window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply);
return_val = FALSE; return_val = FALSE;
/* Now figure out if we really want this drop... /* Now figure out if we really want this drop...
@ -2694,18 +2675,18 @@ gdk_event_translate (GdkEvent *event,
event->any.window = window; event->any.window = window;
event->dropenter.requestor = replyev.xclient.window; event->dropenter.requestor = replyev.xclient.window;
event->dropenter.u.allflags = xevent->xclient.data.l[1]; event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifdef DEBUG_DND
g_print("We sent a GDK_DROP_ENTER on to Gtk\n"); GDK_NOTE (DND, g_print("We sent a GDK_DROP_ENTER on to Gtk\n"));
#endif
return_val = TRUE; return_val = TRUE;
} }
} }
else if (xevent->xclient.message_type == gdk_dnd.gdk_XdeLeave) else if (xevent->xclient.message_type == gdk_dnd.gdk_XdeLeave)
{ {
#ifndef DEBUG_DND #ifdef G_ENABLE_DEBUG
if (gdk_show_events) if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
#endif
g_print ("GDK_DROP_LEAVE\n"); g_print ("GDK_DROP_LEAVE\n");
#endif
if (window_private && window_private->dnd_drop_enabled) if (window_private && window_private->dnd_drop_enabled)
{ {
event->dropleave.type = GDK_DROP_LEAVE; event->dropleave.type = GDK_DROP_LEAVE;
@ -2723,10 +2704,10 @@ gdk_event_translate (GdkEvent *event,
* make sure to only handle requests from the window the cursor is * make sure to only handle requests from the window the cursor is
* over * over
*/ */
#ifndef DEBUG_DND #ifdef G_ENABLE_DEBUG
if (gdk_show_events) if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
#endif
g_print ("GDK_DRAG_REQUEST\n"); g_print ("GDK_DRAG_REQUEST\n");
#endif
event->dragrequest.u.allflags = xevent->xclient.data.l[1]; event->dragrequest.u.allflags = xevent->xclient.data.l[1];
return_val = FALSE; return_val = FALSE;
@ -2778,10 +2759,10 @@ gdk_event_translate (GdkEvent *event,
gulong tmp_long; gulong tmp_long;
guchar *tmp_charptr; guchar *tmp_charptr;
#ifndef DEBUG_DND #ifdef G_ENABLE_DEBUG
if(gdk_show_events) if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
#endif g_print("GDK_DROP_DATA_AVAIL\n");
g_print("GDK_DROP_DATA_AVAIL\n"); #endif
event->dropdataavailable.u.allflags = xevent->xclient.data.l[1]; event->dropdataavailable.u.allflags = xevent->xclient.data.l[1];
if(window if(window
/* No preview of data ATM */ /* No preview of data ATM */
@ -2809,10 +2790,8 @@ gdk_event_translate (GdkEvent *event,
} }
else else
{ {
#ifdef DEBUG_DND GDK_NOTE (DND, g_print("XGetWindowProperty got us %ld bytes\n",
g_print("XGetWindowProperty got us %d bytes\n", event->dropdataavailable.data_numbytes));
event->dropdataavailable.data_numbytes);
#endif
event->dropdataavailable.data = event->dropdataavailable.data =
g_malloc (event->dropdataavailable.data_numbytes); g_malloc (event->dropdataavailable.data_numbytes);
memcpy (event->dropdataavailable.data, memcpy (event->dropdataavailable.data,
@ -2844,8 +2823,8 @@ gdk_event_translate (GdkEvent *event,
case MappingNotify: case MappingNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("mapping notify\n"); g_print ("mapping notify\n"));
/* Let XLib know that there is a new keyboard mapping. /* Let XLib know that there is a new keyboard mapping.
*/ */
@ -3569,9 +3548,9 @@ gdk_ic_cleanup (void)
destroyed++; destroyed++;
} }
} }
if (gdk_debug_level >= 1 && destroyed > 0) if ((gdk_debug_flags & GDK_DEBUG_XIM) && destroyed > 0)
{ {
g_warning ("Cleanuped %i IC\n", destroyed); g_warning ("Cleaned up %i IC(s)\n", destroyed);
} }
g_list_free(xim_ic_list); g_list_free(xim_ic_list);
xim_ic_list = NULL; xim_ic_list = NULL;

View File

@ -42,7 +42,6 @@ void gdk_event_put (GdkEvent *event);
GdkEvent *gdk_event_copy (GdkEvent *event); GdkEvent *gdk_event_copy (GdkEvent *event);
void gdk_event_free (GdkEvent *event); void gdk_event_free (GdkEvent *event);
void gdk_set_debug_level (gint level);
void gdk_set_show_events (gint show_events); void gdk_set_show_events (gint show_events);
void gdk_set_use_xshm (gint use_xshm); void gdk_set_use_xshm (gint use_xshm);

View File

@ -552,11 +552,11 @@ gdk_color_context_new (GdkVisual *visual,
{ {
case GDK_VISUAL_STATIC_GRAY: case GDK_VISUAL_STATIC_GRAY:
case GDK_VISUAL_GRAYSCALE: case GDK_VISUAL_GRAYSCALE:
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is %s\n", g_print ("gdk_color_context_new: visual class is %s\n",
(visual->type == GDK_VISUAL_STATIC_GRAY) ? (visual->type == GDK_VISUAL_STATIC_GRAY) ?
"GDK_VISUAL_STATIC_GRAY" : "GDK_VISUAL_STATIC_GRAY" :
"GDK_VISUAL_GRAYSCALE"); "GDK_VISUAL_GRAYSCALE"));
if (GDK_VISUAL_XVISUAL (cc->visual)->map_entries == 2) if (GDK_VISUAL_XVISUAL (cc->visual)->map_entries == 2)
init_bw (cc); init_bw (cc);
@ -566,26 +566,26 @@ gdk_color_context_new (GdkVisual *visual,
break; break;
case GDK_VISUAL_TRUE_COLOR: /* shifts */ case GDK_VISUAL_TRUE_COLOR: /* shifts */
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n"); g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n"));
init_true_color (cc); init_true_color (cc);
break; break;
case GDK_VISUAL_DIRECT_COLOR: /* shifts and fake CLUT */ case GDK_VISUAL_DIRECT_COLOR: /* shifts and fake CLUT */
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n"); g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n"));
init_direct_color (cc); init_direct_color (cc);
break; break;
case GDK_VISUAL_STATIC_COLOR: case GDK_VISUAL_STATIC_COLOR:
case GDK_VISUAL_PSEUDO_COLOR: case GDK_VISUAL_PSEUDO_COLOR:
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is %s\n", g_print ("gdk_color_context_new: visual class is %s\n",
(visual->type == GDK_VISUAL_STATIC_COLOR) ? (visual->type == GDK_VISUAL_STATIC_COLOR) ?
"GDK_VISUAL_STATIC_COLOR" : "GDK_VISUAL_STATIC_COLOR" :
"GDK_VISUAL_PSEUDO_COLOR"); "GDK_VISUAL_PSEUDO_COLOR"));
init_color (cc); init_color (cc);
break; break;
@ -607,9 +607,9 @@ gdk_color_context_new (GdkVisual *visual,
cc->num_allocated = 0; cc->num_allocated = 0;
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: screen depth is %i, no. of colors is %i\n", g_print ("gdk_color_context_new: screen depth is %i, no. of colors is %i\n",
cc->visual->depth, cc->num_colors); cc->visual->depth, cc->num_colors));
/* check if we need to initialize a hash table */ /* check if we need to initialize a hash table */
@ -811,10 +811,10 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
{ {
cc->max_colors *= 2; cc->max_colors *= 2;
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixel: " g_print ("gdk_color_context_get_pixel: "
"resizing CLUT to %i entries\n", "resizing CLUT to %i entries\n",
cc->max_colors); cc->max_colors));
cc->clut = g_realloc (cc->clut, cc->clut = g_realloc (cc->clut,
cc->max_colors * sizeof (gulong)); cc->max_colors * sizeof (gulong));
@ -906,9 +906,9 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels: got all %i colors; " g_print ("gdk_color_context_get_pixels: got all %i colors; "
"(%i colors allocated so far)\n", ncolors, cc->num_allocated); "(%i colors allocated so far)\n", ncolors, cc->num_allocated));
return; return;
} }
@ -1031,10 +1031,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels: got %i colors, %i exact and " g_print ("gdk_color_context_get_pixels: got %i colors, %i exact and "
"%i close (%i colors allocated so far)\n", "%i close (%i colors allocated so far)\n",
ncolors, exact_col, close_col, cc->num_allocated); ncolors, exact_col, close_col, cc->num_allocated));
return; return;
} }
@ -1102,10 +1102,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
} }
while (++idx < nopen); while (++idx < nopen);
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels: got %i colors, %i exact, %i close, " g_print ("gdk_color_context_get_pixels: got %i colors, %i exact, %i close, "
"%i substituted, %i to black (%i colors allocated so far)\n", "%i substituted, %i to black (%i colors allocated so far)\n",
ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated); ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated));
} }
void void
@ -1176,9 +1176,9 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
} }
#ifdef DEBUG #ifdef DEBUG
else else
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: " g_print ("gdk_color_context_get_pixels_incremental: "
"pixel at slot %i already allocated, skipping\n", i); "pixel at slot %i already allocated, skipping\n", i));
#endif #endif
} }
} }
@ -1187,10 +1187,10 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: got all %i colors " g_print ("gdk_color_context_get_pixels_incremental: got all %i colors "
"(%i colors allocated so far)\n", "(%i colors allocated so far)\n",
ncolors, cc->num_allocated); ncolors, cc->num_allocated));
return; return;
} }
@ -1293,11 +1293,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: " g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact and %i close " "got %i colors, %i exact and %i close "
"(%i colors allocated so far)\n", "(%i colors allocated so far)\n",
ncolors, exact_col, close_col, cc->num_allocated); ncolors, exact_col, close_col, cc->num_allocated));
return; return;
} }
@ -1364,11 +1364,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
} }
while (++idx < nopen); while (++idx < nopen);
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: " g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact, %i close, %i substituted, %i to black " "got %i colors, %i exact, %i close, %i substituted, %i to black "
"(%i colors allocated so far)\n", "(%i colors allocated so far)\n",
ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated); ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated));
} }
gint gint

View File

@ -20,8 +20,7 @@
#include "gdktypes.h" #include "gdktypes.h"
#include "gdkprivate.h" #include "gdkprivate.h"
gint gdk_debug_level = 0; guint gdk_debug_flags = 0;
gint gdk_show_events = FALSE;
gint gdk_use_xshm = TRUE; gint gdk_use_xshm = TRUE;
gchar *gdk_display_name = NULL; gchar *gdk_display_name = NULL;
Display *gdk_display = NULL; Display *gdk_display = NULL;

View File

@ -581,13 +581,13 @@ gdk_input_common_other_event (GdkEvent *event,
event->button.state = gdk_input_translate_state(xdbe->state,xdbe->device_state); event->button.state = gdk_input_translate_state(xdbe->state,xdbe->device_state);
event->button.button = xdbe->button; event->button.button = xdbe->button;
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("button %s:\t\twindow: %ld device: %ld x,y: %f %f button: %d\n", g_print ("button %s:\t\twindow: %ld device: %ld x,y: %f %f button: %d\n",
(event->button.type == GDK_BUTTON_PRESS) ? "press" : "release", (event->button.type == GDK_BUTTON_PRESS) ? "press" : "release",
xdbe->window, xdbe->window,
xdbe->deviceid, xdbe->deviceid,
event->button.x, event->button.y, event->button.x, event->button.y,
xdbe->button); xdbe->button));
return TRUE; return TRUE;
} }
@ -597,12 +597,12 @@ gdk_input_common_other_event (GdkEvent *event,
{ {
XDeviceKeyEvent *xdke = (XDeviceKeyEvent *)(xevent); XDeviceKeyEvent *xdke = (XDeviceKeyEvent *)(xevent);
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n", g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n",
(event->key.type == GDK_KEY_PRESS) ? "press" : "release", (event->key.type == GDK_KEY_PRESS) ? "press" : "release",
xdke->window, xdke->window,
xdke->deviceid, xdke->deviceid,
xdke->keycode); xdke->keycode));
if (xdke->keycode < gdkdev->min_keycode || if (xdke->keycode < gdkdev->min_keycode ||
xdke->keycode >= gdkdev->min_keycode + gdkdev->info.num_keys) xdke->keycode >= gdkdev->min_keycode + gdkdev->info.num_keys)
@ -615,8 +615,8 @@ gdk_input_common_other_event (GdkEvent *event,
if (event->key.keyval == 0) if (event->key.keyval == 0)
{ {
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - NONE\n"); g_print ("\t\ttranslation - NONE\n"));
return FALSE; return FALSE;
} }
@ -644,10 +644,10 @@ gdk_input_common_other_event (GdkEvent *event,
event->key.string = g_new0 (gchar, 1); event->key.string = g_new0 (gchar, 1);
} }
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n", g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n",
event->key.keyval, event->key.keyval,
event->key.state); event->key.state));
return TRUE; return TRUE;
} }
@ -672,13 +672,13 @@ gdk_input_common_other_event (GdkEvent *event,
event->motion.source = gdkdev->info.source; event->motion.source = gdkdev->info.source;
event->motion.deviceid = xdme->deviceid; event->motion.deviceid = xdme->deviceid;
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("motion notify:\t\twindow: %ld device: %ld x,y: %f %f state %#4x hint: %s\n", g_print ("motion notify:\t\twindow: %ld device: %ld x,y: %f %f state %#4x hint: %s\n",
xdme->window, xdme->window,
xdme->deviceid, xdme->deviceid,
event->motion.x, event->motion.y, event->motion.x, event->motion.y,
event->motion.state, event->motion.state,
(xdme->is_hint) ? "true" : "false"); (xdme->is_hint) ? "true" : "false"));
return TRUE; return TRUE;

View File

@ -170,7 +170,6 @@ typedef struct _GdkICPrivate GdkICPrivate;
#endif /* USE_XIM */ #endif /* USE_XIM */
struct _GdkColorContextPrivate struct _GdkColorContextPrivate
{ {
GdkColorContext color_context; GdkColorContext color_context;
@ -178,6 +177,13 @@ struct _GdkColorContextPrivate
XStandardColormap std_cmap; XStandardColormap std_cmap;
}; };
typedef enum {
GDK_DEBUG_MISC = 1<<0,
GDK_DEBUG_EVENTS = 1 << 1,
GDK_DEBUG_DND = 1<<2,
GDK_DEBUG_COLOR_CONTEXT = 1<<3,
GDK_DEBUG_XIM = 1<<4
} GdkDebugFlag;
void gdk_window_init (void); void gdk_window_init (void);
void gdk_visual_init (void); void gdk_visual_init (void);
@ -219,6 +225,22 @@ extern gchar *gdk_progclass;
extern gint gdk_error_code; extern gint gdk_error_code;
extern gint gdk_error_warnings; extern gint gdk_error_warnings;
/* Debugging support */
#ifdef G_ENABLE_DEBUG
#define GDK_NOTE(type,action) G_STMT_START { \
if (gdk_debug_flags & GDK_DEBUG_##type) \
action; } G_STMT_END
#else /* !G_ENABLE_DEBUG */
#define GDK_NOTE(type,action)
#endif /* G_ENABLE_DEBUG */
extern guint gdk_debug_flags;
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -201,7 +201,7 @@ gdk_visual_init ()
break; break;
} }
if (gdk_debug_level >= 1) if (gdk_debug_flags & GDK_DEBUG_MISC)
for (i = 0; i < nvisuals; i++) for (i = 0; i < nvisuals; i++)
g_print ("visual: %s: %d\n", g_print ("visual: %s: %d\n",
visual_names[visuals[i].visual.type], visual_names[visuals[i].visual.type],

View File

@ -552,11 +552,11 @@ gdk_color_context_new (GdkVisual *visual,
{ {
case GDK_VISUAL_STATIC_GRAY: case GDK_VISUAL_STATIC_GRAY:
case GDK_VISUAL_GRAYSCALE: case GDK_VISUAL_GRAYSCALE:
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is %s\n", g_print ("gdk_color_context_new: visual class is %s\n",
(visual->type == GDK_VISUAL_STATIC_GRAY) ? (visual->type == GDK_VISUAL_STATIC_GRAY) ?
"GDK_VISUAL_STATIC_GRAY" : "GDK_VISUAL_STATIC_GRAY" :
"GDK_VISUAL_GRAYSCALE"); "GDK_VISUAL_GRAYSCALE"));
if (GDK_VISUAL_XVISUAL (cc->visual)->map_entries == 2) if (GDK_VISUAL_XVISUAL (cc->visual)->map_entries == 2)
init_bw (cc); init_bw (cc);
@ -566,26 +566,26 @@ gdk_color_context_new (GdkVisual *visual,
break; break;
case GDK_VISUAL_TRUE_COLOR: /* shifts */ case GDK_VISUAL_TRUE_COLOR: /* shifts */
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n"); g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n"));
init_true_color (cc); init_true_color (cc);
break; break;
case GDK_VISUAL_DIRECT_COLOR: /* shifts and fake CLUT */ case GDK_VISUAL_DIRECT_COLOR: /* shifts and fake CLUT */
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n"); g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n"));
init_direct_color (cc); init_direct_color (cc);
break; break;
case GDK_VISUAL_STATIC_COLOR: case GDK_VISUAL_STATIC_COLOR:
case GDK_VISUAL_PSEUDO_COLOR: case GDK_VISUAL_PSEUDO_COLOR:
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is %s\n", g_print ("gdk_color_context_new: visual class is %s\n",
(visual->type == GDK_VISUAL_STATIC_COLOR) ? (visual->type == GDK_VISUAL_STATIC_COLOR) ?
"GDK_VISUAL_STATIC_COLOR" : "GDK_VISUAL_STATIC_COLOR" :
"GDK_VISUAL_PSEUDO_COLOR"); "GDK_VISUAL_PSEUDO_COLOR"));
init_color (cc); init_color (cc);
break; break;
@ -607,9 +607,9 @@ gdk_color_context_new (GdkVisual *visual,
cc->num_allocated = 0; cc->num_allocated = 0;
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: screen depth is %i, no. of colors is %i\n", g_print ("gdk_color_context_new: screen depth is %i, no. of colors is %i\n",
cc->visual->depth, cc->num_colors); cc->visual->depth, cc->num_colors));
/* check if we need to initialize a hash table */ /* check if we need to initialize a hash table */
@ -811,10 +811,10 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
{ {
cc->max_colors *= 2; cc->max_colors *= 2;
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixel: " g_print ("gdk_color_context_get_pixel: "
"resizing CLUT to %i entries\n", "resizing CLUT to %i entries\n",
cc->max_colors); cc->max_colors));
cc->clut = g_realloc (cc->clut, cc->clut = g_realloc (cc->clut,
cc->max_colors * sizeof (gulong)); cc->max_colors * sizeof (gulong));
@ -906,9 +906,9 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels: got all %i colors; " g_print ("gdk_color_context_get_pixels: got all %i colors; "
"(%i colors allocated so far)\n", ncolors, cc->num_allocated); "(%i colors allocated so far)\n", ncolors, cc->num_allocated));
return; return;
} }
@ -1031,10 +1031,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels: got %i colors, %i exact and " g_print ("gdk_color_context_get_pixels: got %i colors, %i exact and "
"%i close (%i colors allocated so far)\n", "%i close (%i colors allocated so far)\n",
ncolors, exact_col, close_col, cc->num_allocated); ncolors, exact_col, close_col, cc->num_allocated));
return; return;
} }
@ -1102,10 +1102,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
} }
while (++idx < nopen); while (++idx < nopen);
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels: got %i colors, %i exact, %i close, " g_print ("gdk_color_context_get_pixels: got %i colors, %i exact, %i close, "
"%i substituted, %i to black (%i colors allocated so far)\n", "%i substituted, %i to black (%i colors allocated so far)\n",
ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated); ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated));
} }
void void
@ -1176,9 +1176,9 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
} }
#ifdef DEBUG #ifdef DEBUG
else else
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: " g_print ("gdk_color_context_get_pixels_incremental: "
"pixel at slot %i already allocated, skipping\n", i); "pixel at slot %i already allocated, skipping\n", i));
#endif #endif
} }
} }
@ -1187,10 +1187,10 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: got all %i colors " g_print ("gdk_color_context_get_pixels_incremental: got all %i colors "
"(%i colors allocated so far)\n", "(%i colors allocated so far)\n",
ncolors, cc->num_allocated); ncolors, cc->num_allocated));
return; return;
} }
@ -1293,11 +1293,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0)) if ((ncols == ncolors) || (nopen == 0))
{ {
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: " g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact and %i close " "got %i colors, %i exact and %i close "
"(%i colors allocated so far)\n", "(%i colors allocated so far)\n",
ncolors, exact_col, close_col, cc->num_allocated); ncolors, exact_col, close_col, cc->num_allocated));
return; return;
} }
@ -1364,11 +1364,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
} }
while (++idx < nopen); while (++idx < nopen);
if (gdk_debug_level >= 1) GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: " g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact, %i close, %i substituted, %i to black " "got %i colors, %i exact, %i close, %i substituted, %i to black "
"(%i colors allocated so far)\n", "(%i colors allocated so far)\n",
ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated); ncolors, exact_col, close_col, subst_col, black_col, cc->num_allocated));
} }
gint gint

View File

@ -20,8 +20,7 @@
#include "gdktypes.h" #include "gdktypes.h"
#include "gdkprivate.h" #include "gdkprivate.h"
gint gdk_debug_level = 0; guint gdk_debug_flags = 0;
gint gdk_show_events = FALSE;
gint gdk_use_xshm = TRUE; gint gdk_use_xshm = TRUE;
gchar *gdk_display_name = NULL; gchar *gdk_display_name = NULL;
Display *gdk_display = NULL; Display *gdk_display = NULL;

View File

@ -581,13 +581,13 @@ gdk_input_common_other_event (GdkEvent *event,
event->button.state = gdk_input_translate_state(xdbe->state,xdbe->device_state); event->button.state = gdk_input_translate_state(xdbe->state,xdbe->device_state);
event->button.button = xdbe->button; event->button.button = xdbe->button;
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("button %s:\t\twindow: %ld device: %ld x,y: %f %f button: %d\n", g_print ("button %s:\t\twindow: %ld device: %ld x,y: %f %f button: %d\n",
(event->button.type == GDK_BUTTON_PRESS) ? "press" : "release", (event->button.type == GDK_BUTTON_PRESS) ? "press" : "release",
xdbe->window, xdbe->window,
xdbe->deviceid, xdbe->deviceid,
event->button.x, event->button.y, event->button.x, event->button.y,
xdbe->button); xdbe->button));
return TRUE; return TRUE;
} }
@ -597,12 +597,12 @@ gdk_input_common_other_event (GdkEvent *event,
{ {
XDeviceKeyEvent *xdke = (XDeviceKeyEvent *)(xevent); XDeviceKeyEvent *xdke = (XDeviceKeyEvent *)(xevent);
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n", g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n",
(event->key.type == GDK_KEY_PRESS) ? "press" : "release", (event->key.type == GDK_KEY_PRESS) ? "press" : "release",
xdke->window, xdke->window,
xdke->deviceid, xdke->deviceid,
xdke->keycode); xdke->keycode));
if (xdke->keycode < gdkdev->min_keycode || if (xdke->keycode < gdkdev->min_keycode ||
xdke->keycode >= gdkdev->min_keycode + gdkdev->info.num_keys) xdke->keycode >= gdkdev->min_keycode + gdkdev->info.num_keys)
@ -615,8 +615,8 @@ gdk_input_common_other_event (GdkEvent *event,
if (event->key.keyval == 0) if (event->key.keyval == 0)
{ {
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - NONE\n"); g_print ("\t\ttranslation - NONE\n"));
return FALSE; return FALSE;
} }
@ -644,10 +644,10 @@ gdk_input_common_other_event (GdkEvent *event,
event->key.string = g_new0 (gchar, 1); event->key.string = g_new0 (gchar, 1);
} }
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n", g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n",
event->key.keyval, event->key.keyval,
event->key.state); event->key.state));
return TRUE; return TRUE;
} }
@ -672,13 +672,13 @@ gdk_input_common_other_event (GdkEvent *event,
event->motion.source = gdkdev->info.source; event->motion.source = gdkdev->info.source;
event->motion.deviceid = xdme->deviceid; event->motion.deviceid = xdme->deviceid;
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("motion notify:\t\twindow: %ld device: %ld x,y: %f %f state %#4x hint: %s\n", g_print ("motion notify:\t\twindow: %ld device: %ld x,y: %f %f state %#4x hint: %s\n",
xdme->window, xdme->window,
xdme->deviceid, xdme->deviceid,
event->motion.x, event->motion.y, event->motion.x, event->motion.y,
event->motion.state, event->motion.state,
(xdme->is_hint) ? "true" : "false"); (xdme->is_hint) ? "true" : "false"));
return TRUE; return TRUE;

View File

@ -17,8 +17,6 @@
*/ */
#include "../config.h" #include "../config.h"
/* #define DEBUG_DND 1 */ /* Shouldn't be needed much these days */
/* If you don't want to use gdk's signal handlers define this */ /* If you don't want to use gdk's signal handlers define this */
/* #define I_NEED_TO_ACTUALLY_DEBUG_MY_PROGRAMS 1 */ /* #define I_NEED_TO_ACTUALLY_DEBUG_MY_PROGRAMS 1 */
@ -227,6 +225,15 @@ static GList *putback_events = NULL;
static gulong base_id; static gulong base_id;
static gint autorepeat; static gint autorepeat;
#ifdef G_ENABLE_DEBUG
static GDebugKey gdk_debug_keys[] = {
{"events", GDK_DEBUG_EVENTS},
{"misc", GDK_DEBUG_MISC},
{"dnd", GDK_DEBUG_DND},
{"color-context", GDK_DEBUG_COLOR_CONTEXT},
{"xim", GDK_DEBUG_XIM}
};
#endif /* G_ENABLE_DEBUG */
/* /*
*-------------------------------------------------------------- *--------------------------------------------------------------
@ -260,6 +267,8 @@ gdk_init (int *argc,
int argc_orig = *argc; int argc_orig = *argc;
char **argv_orig; char **argv_orig;
gboolean debug_set = FALSE;
argv_orig = malloc ((argc_orig + 1) * sizeof (char*)); argv_orig = malloc ((argc_orig + 1) * sizeof (char*));
for (i = 0; i < argc_orig; i++) for (i = 0; i < argc_orig; i++)
argv_orig[i] = g_strdup ((*argv)[i]); argv_orig[i] = g_strdup ((*argv)[i]);
@ -291,11 +300,30 @@ gdk_init (int *argc,
for (i = 1; i < *argc;) for (i = 1; i < *argc;)
{ {
if (strcmp ("--display", (*argv)[i]) == 0) if ((*argv)[i] == NULL)
continue;
#ifdef G_ENABLE_DEBUG
if (strcmp ("--gdk-debug", (*argv)[i]) == 0)
{ {
(*argv)[i] = NULL; (*argv)[i] = NULL;
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{
gdk_debug_flags = g_parse_debug_string ((*argv)[i+1],
gdk_debug_keys,
sizeof(gdk_debug_keys) / sizeof(GDebugKey));
debug_set = TRUE;
(*argv)[i + 1] = NULL;
i += 1;
}
}
#endif G_ENABLE_DEBUG
else if (strcmp ("--display", (*argv)[i]) == 0)
{
(*argv)[i] = NULL;
if ((i + 1) < *argc && (*argv)[i + 1])
{ {
gdk_display_name = g_strdup ((*argv)[i + 1]); gdk_display_name = g_strdup ((*argv)[i + 1]);
(*argv)[i + 1] = NULL; (*argv)[i + 1] = NULL;
@ -307,33 +335,14 @@ gdk_init (int *argc,
(*argv)[i] = NULL; (*argv)[i] = NULL;
synchronize = TRUE; synchronize = TRUE;
} }
else if (strcmp ("--show-events", (*argv)[i]) == 0)
{
(*argv)[i] = NULL;
gdk_show_events = TRUE;
}
else if (strcmp ("--no-show-events", (*argv)[i]) == 0)
{
(*argv)[i] = NULL;
gdk_show_events = FALSE;
}
else if (strcmp ("--no-xshm", (*argv)[i]) == 0) else if (strcmp ("--no-xshm", (*argv)[i]) == 0)
{ {
(*argv)[i] = NULL; (*argv)[i] = NULL;
gdk_use_xshm = FALSE; gdk_use_xshm = FALSE;
} }
else if (strcmp ("--debug-level", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
{
(*argv)[i++] = NULL;
gdk_debug_level = atoi ((*argv)[i]);
(*argv)[i] = NULL;
}
}
else if (strcmp ("--name", (*argv)[i]) == 0) else if (strcmp ("--name", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_progname = (*argv)[i]; gdk_progname = (*argv)[i];
@ -342,7 +351,7 @@ gdk_init (int *argc,
} }
else if (strcmp ("--class", (*argv)[i]) == 0) else if (strcmp ("--class", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_progclass = (*argv)[i]; gdk_progclass = (*argv)[i];
@ -352,7 +361,7 @@ gdk_init (int *argc,
#ifdef XINPUT_GXI #ifdef XINPUT_GXI
else if (strcmp ("--gxid_host", (*argv)[i]) == 0) else if (strcmp ("--gxid_host", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_input_gxid_host = ((*argv)[i]); gdk_input_gxid_host = ((*argv)[i]);
@ -361,7 +370,7 @@ gdk_init (int *argc,
} }
else if (strcmp ("--gxid_port", (*argv)[i]) == 0) else if (strcmp ("--gxid_port", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
gdk_input_gxid_port = atoi ((*argv)[i]); gdk_input_gxid_port = atoi ((*argv)[i]);
@ -372,7 +381,7 @@ gdk_init (int *argc,
#ifdef USE_XIM #ifdef USE_XIM
else if (strcmp ("--xim-preedit", (*argv)[i]) == 0) else if (strcmp ("--xim-preedit", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0) if (strcmp ("none", (*argv)[i]) == 0)
@ -389,7 +398,7 @@ gdk_init (int *argc,
} }
else if (strcmp ("--xim-status", (*argv)[i]) == 0) else if (strcmp ("--xim-status", (*argv)[i]) == 0)
{ {
if ((i + 1) < *argc) if ((i + 1) < *argc && (*argv)[i + 1])
{ {
(*argv)[i++] = NULL; (*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0) if (strcmp ("none", (*argv)[i]) == 0)
@ -427,6 +436,15 @@ gdk_init (int *argc,
gdk_progname = "<unknown>"; gdk_progname = "<unknown>";
} }
if (!debug_set)
{
gchar *debug_string = getenv("GDK_DEBUG");
if (debug_string != NULL)
gdk_debug_flags = g_parse_debug_string (debug_string,
gdk_debug_keys,
sizeof(gdk_debug_keys) / sizeof(GDebugKey));
}
gdk_display = XOpenDisplay (gdk_display_name); gdk_display = XOpenDisplay (gdk_display_name);
if (!gdk_display) if (!gdk_display)
{ {
@ -440,12 +458,11 @@ gdk_init (int *argc,
*/ */
/* base_id = RESOURCE_BASE; */ /* base_id = RESOURCE_BASE; */
base_id = 0; base_id = 0;
if (gdk_show_events) GDK_NOTE (EVENTS, g_print ("base id: %lu\n", base_id));
g_print ("base id: %lu\n", base_id);
connection_number = ConnectionNumber (gdk_display); connection_number = ConnectionNumber (gdk_display);
if (gdk_debug_level >= 1) GDK_NOTE (MISC,
g_print ("connection number: %d\n", connection_number); g_print ("connection number: %d\n", connection_number));
if (synchronize) if (synchronize)
XSynchronize (gdk_display, True); XSynchronize (gdk_display, True);
@ -927,31 +944,6 @@ gdk_event_free (GdkEvent *event)
g_mem_chunk_free (event_chunk, event); g_mem_chunk_free (event_chunk, event);
} }
/*
*--------------------------------------------------------------
* gdk_set_debug_level
*
* Sets the debugging level.
*
* Arguments:
* "level" is the new debugging level.
*
* Results:
*
* Side effects:
* Other function calls to "gdk" use the debugging
* level to determine what kind of debugging information
* to print out.
*
*--------------------------------------------------------------
*/
void
gdk_set_debug_level (int level)
{
gdk_debug_level = level;
}
/* /*
*-------------------------------------------------------------- *--------------------------------------------------------------
* gdk_set_show_events * gdk_set_show_events
@ -975,7 +967,10 @@ gdk_set_debug_level (int level)
void void
gdk_set_show_events (int show_events) gdk_set_show_events (int show_events)
{ {
gdk_show_events = show_events; if (show_events)
gdk_debug_flags |= GDK_DEBUG_EVENTS;
else
gdk_debug_flags &= ~GDK_DEBUG_EVENTS;
} }
void void
@ -984,16 +979,10 @@ gdk_set_use_xshm (gint use_xshm)
gdk_use_xshm = use_xshm; gdk_use_xshm = use_xshm;
} }
gint
gdk_get_debug_level ()
{
return gdk_debug_level;
}
gint gint
gdk_get_show_events () gdk_get_show_events ()
{ {
return gdk_show_events; return gdk_debug_flags & GDK_DEBUG_EVENTS;
} }
gint gint
@ -1750,8 +1739,8 @@ gdk_event_translate (GdkEvent *event,
if (status == XBufferOverflow) if (status == XBufferOverflow)
{ /* retry */ { /* retry */
/* alloc adequate size of buffer */ /* alloc adequate size of buffer */
if (gdk_debug_level >= 1) GDK_NOTE (XIM,
g_print("XIM: overflow (required %i)\n", charcount); g_print("XIM: overflow (required %i)\n", charcount));
while (buf_len <= charcount) while (buf_len <= charcount)
buf_len *= 2; buf_len *= 2;
@ -1784,7 +1773,8 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) #ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & GDK_DEBUG_EVENTS)
{ {
g_print ("key press:\twindow: %ld key: %12s %d\n", g_print ("key press:\twindow: %ld key: %12s %d\n",
xevent->xkey.window - base_id, xevent->xkey.window - base_id,
@ -1794,6 +1784,7 @@ gdk_event_translate (GdkEvent *event,
g_print ("\t\tlength: %4d string: \"%s\"\n", g_print ("\t\tlength: %4d string: \"%s\"\n",
charcount, buf); charcount, buf);
} }
#endif /* G_ENABLE_DEBUG */
event->key.type = GDK_KEY_PRESS; event->key.type = GDK_KEY_PRESS;
event->key.window = window; event->key.window = window;
@ -1818,11 +1809,11 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("key release:\t\twindow: %ld key: %12s %d\n", g_print ("key release:\t\twindow: %ld key: %12s %d\n",
xevent->xkey.window - base_id, xevent->xkey.window - base_id,
XKeysymToString (event->key.keyval), XKeysymToString (event->key.keyval),
event->key.keyval); event->key.keyval));
event->key.type = GDK_KEY_RELEASE; event->key.type = GDK_KEY_RELEASE;
event->key.window = window; event->key.window = window;
@ -1837,12 +1828,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonPress: case ButtonPress:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("button press[%d]:\t\twindow: %ld x,y: %d %d button: %d\n", g_print ("button press[%d]:\t\twindow: %ld x,y: %d %d button: %d\n",
window_private?window_private->dnd_drag_enabled:0, window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id, xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y, xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button); xevent->xbutton.button));
if (window_private && if (window_private &&
(window_private->extension_events != 0) && (window_private->extension_events != 0) &&
@ -1941,12 +1932,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonRelease: case ButtonRelease:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("button release[%d]:\twindow: %ld x,y: %d %d button: %d\n", g_print ("button release[%d]:\twindow: %ld x,y: %d %d button: %d\n",
window_private?window_private->dnd_drag_enabled:0, window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id, xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y, xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button); xevent->xbutton.button));
if (window_private && if (window_private &&
(window_private->extension_events != 0) && (window_private->extension_events != 0) &&
@ -2018,12 +2009,12 @@ gdk_event_translate (GdkEvent *event,
case MotionNotify: case MotionNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("motion notify:\t\twindow: %ld x,y: %d %d hint: %s d:%d r%d\n", g_print ("motion notify:\t\twindow: %ld x,y: %d %d hint: %s d:%d r%d\n",
xevent->xmotion.window - base_id, xevent->xmotion.window - base_id,
xevent->xmotion.x, xevent->xmotion.y, xevent->xmotion.x, xevent->xmotion.y,
(xevent->xmotion.is_hint) ? "true" : "false", (xevent->xmotion.is_hint) ? "true" : "false",
dnd_drag_perhaps, gdk_dnd.drag_really); dnd_drag_perhaps, gdk_dnd.drag_really));
if (window_private && if (window_private &&
(window_private->extension_events != 0) && (window_private->extension_events != 0) &&
@ -2075,10 +2066,9 @@ gdk_event_translate (GdkEvent *event,
x, y, &x, &y, &twin); x, y, &x, &y, &twin);
} }
} }
#if defined(DEBUG_DND) /* && defined(DEBUG_DND_MORE_DETAILS) */ GDK_NOTE (DND,
g_print("Drag is now in window %#x, lastwin was %#x, ddc = %#x\n", g_print("Drag is now in window %#lx, lastwin was %#lx, ddc = %#lx\n",
curwin, lastwin, dnd_drag_curwin); curwin, lastwin, dnd_drag_curwin));
#endif
if(curwin != dnd_drag_curwin && curwin != lastwin) if(curwin != dnd_drag_curwin && curwin != lastwin)
{ {
/* We have left one window and entered another /* We have left one window and entered another
@ -2090,10 +2080,10 @@ gdk_event_translate (GdkEvent *event,
dnd_drag_dropzone.x = dnd_drag_dropzone.y = 0; dnd_drag_dropzone.x = dnd_drag_dropzone.y = 0;
dnd_drag_dropzone.width = dnd_drag_dropzone.height = 0; dnd_drag_dropzone.width = dnd_drag_dropzone.height = 0;
dnd_drag_target = None; dnd_drag_target = None;
#ifdef DEBUG_DND GDK_NOTE (DND,
g_print("curwin = %#x, lastwin = %#x, dnd_drag_curwin = %#x\n", g_print("curwin = %#lx, lastwin = %#lx, dnd_drag_curwin = %#lx\n",
curwin, lastwin, dnd_drag_curwin); curwin, lastwin, dnd_drag_curwin));
#endif
XChangeActivePointerGrab(gdk_display, XChangeActivePointerGrab(gdk_display,
ButtonMotionMask | ButtonMotionMask |
ButtonPressMask | ButtonReleaseMask, ButtonPressMask | ButtonReleaseMask,
@ -2139,13 +2129,11 @@ gdk_event_translate (GdkEvent *event,
case EnterNotify: case EnterNotify:
/* Print debugging info. /* Print debugging info.
*/ */
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS)) GDK_NOTE (EVENTS,
if (gdk_show_events)
#endif
g_print ("enter notify:\t\twindow: %ld detail: %d subwin: %ld\n", g_print ("enter notify:\t\twindow: %ld detail: %d subwin: %ld\n",
xevent->xcrossing.window - base_id, xevent->xcrossing.window - base_id,
xevent->xcrossing.detail, xevent->xcrossing.detail,
xevent->xcrossing.subwindow - base_id); xevent->xcrossing.subwindow - base_id));
/* Tell XInput stuff about it if appropriate */ /* Tell XInput stuff about it if appropriate */
if (window_private && if (window_private &&
@ -2188,21 +2176,20 @@ gdk_event_translate (GdkEvent *event,
break; break;
} }
#ifdef DEBUG_DND if ((gdk_debug_flags & GDK_DEBUG_DND) & dnd_drag_perhaps)
if(dnd_drag_perhaps) {
{ g_print("We may[%d] have a drag into %#lx = %#lx\n",
g_print("We may[%d] have a drag into %#x = %#x\n", gdk_dnd.drag_really,
gdk_dnd.drag_really, xevent->xcrossing.window, real_sw->xwindow);
xevent->xcrossing.window, real_sw->xwindow); }
}
#endif
if (dnd_drag_perhaps && gdk_dnd.drag_really && if (dnd_drag_perhaps && gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow)) (xevent->xcrossing.window == real_sw->xwindow))
{ {
gdk_dnd.drag_really = 0; gdk_dnd.drag_really = 0;
#ifdef DEBUG_DND
g_print("Ungrabbed\n"); GDK_NOTE (DND, g_print("Ungrabbed\n"));
#endif
gdk_dnd.drag_numwindows = 0; gdk_dnd.drag_numwindows = 0;
g_free(gdk_dnd.drag_startwindows); g_free(gdk_dnd.drag_startwindows);
gdk_dnd.drag_startwindows = NULL; gdk_dnd.drag_startwindows = NULL;
@ -2217,12 +2204,10 @@ gdk_event_translate (GdkEvent *event,
case LeaveNotify: case LeaveNotify:
/* Print debugging info. /* Print debugging info.
*/ */
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS)) GDK_NOTE (EVENTS,
if (gdk_show_events)
#endif
g_print ("leave notify:\t\twindow: %ld detail: %d subwin: %ld\n", g_print ("leave notify:\t\twindow: %ld detail: %d subwin: %ld\n",
xevent->xcrossing.window - base_id, xevent->xcrossing.window - base_id,
xevent->xcrossing.detail, xevent->xcrossing.subwindow - base_id); xevent->xcrossing.detail, xevent->xcrossing.subwindow - base_id));
event->crossing.type = GDK_LEAVE_NOTIFY; event->crossing.type = GDK_LEAVE_NOTIFY;
event->crossing.window = window; event->crossing.window = window;
@ -2258,14 +2243,12 @@ gdk_event_translate (GdkEvent *event,
event->crossing.detail = GDK_NOTIFY_UNKNOWN; event->crossing.detail = GDK_NOTIFY_UNKNOWN;
break; break;
} }
#ifdef DEBUG_DND if ((gdk_debug_flags & GDK_DEBUG_DND) & dnd_drag_perhaps)
if(dnd_drag_perhaps)
{ {
g_print("We may[%d] have a drag out of %#x = %#x\n", g_print("We may[%d] have a drag out of %#lx = %#lx\n",
gdk_dnd.drag_really, gdk_dnd.drag_really,
xevent->xcrossing.window, real_sw->xwindow); xevent->xcrossing.window, real_sw->xwindow);
} }
#endif
if (dnd_drag_perhaps && !gdk_dnd.drag_really && if (dnd_drag_perhaps && !gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow)) (xevent->xcrossing.window == real_sw->xwindow))
{ {
@ -2295,10 +2278,10 @@ gdk_event_translate (GdkEvent *event,
case NotifyNonlinear: case NotifyNonlinear:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("focus %s:\t\twindow: %ld\n", g_print ("focus %s:\t\twindow: %ld\n",
(xevent->xany.type == FocusIn) ? "in" : "out", (xevent->xany.type == FocusIn) ? "in" : "out",
xevent->xfocus.window - base_id); xevent->xfocus.window - base_id));
event->focus_change.type = GDK_FOCUS_CHANGE; event->focus_change.type = GDK_FOCUS_CHANGE;
event->focus_change.window = window; event->focus_change.window = window;
@ -2314,8 +2297,8 @@ gdk_event_translate (GdkEvent *event,
case KeymapNotify: case KeymapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("keymap notify\n"); g_print ("keymap notify\n"));
/* Not currently handled */ /* Not currently handled */
break; break;
@ -2323,11 +2306,11 @@ gdk_event_translate (GdkEvent *event,
case Expose: case Expose:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d\n", g_print ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d\n",
xevent->xexpose.window - base_id, xevent->xexpose.count, xevent->xexpose.window - base_id, xevent->xexpose.count,
xevent->xexpose.x, xevent->xexpose.y, xevent->xexpose.x, xevent->xexpose.y,
xevent->xexpose.width, xevent->xexpose.height); xevent->xexpose.width, xevent->xexpose.height));
event->expose.type = GDK_EXPOSE; event->expose.type = GDK_EXPOSE;
event->expose.window = window; event->expose.window = window;
@ -2343,9 +2326,9 @@ gdk_event_translate (GdkEvent *event,
case GraphicsExpose: case GraphicsExpose:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("graphics expose:\tdrawable: %ld\n", g_print ("graphics expose:\tdrawable: %ld\n",
xevent->xgraphicsexpose.drawable - base_id); xevent->xgraphicsexpose.drawable - base_id));
event->expose.type = GDK_EXPOSE; event->expose.type = GDK_EXPOSE;
event->expose.window = window; event->expose.window = window;
@ -2361,9 +2344,9 @@ gdk_event_translate (GdkEvent *event,
case NoExpose: case NoExpose:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("no expose:\t\tdrawable: %ld\n", g_print ("no expose:\t\tdrawable: %ld\n",
xevent->xnoexpose.drawable - base_id); xevent->xnoexpose.drawable - base_id));
event->no_expose.type = GDK_NO_EXPOSE; event->no_expose.type = GDK_NO_EXPOSE;
event->no_expose.window = window; event->no_expose.window = window;
@ -2374,7 +2357,7 @@ gdk_event_translate (GdkEvent *event,
case VisibilityNotify: case VisibilityNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) if (gdk_debug_flags & GDK_DEBUG_EVENTS)
switch (xevent->xvisibility.state) switch (xevent->xvisibility.state)
{ {
case VisibilityFullyObscured: case VisibilityFullyObscured:
@ -2419,9 +2402,9 @@ gdk_event_translate (GdkEvent *event,
case DestroyNotify: case DestroyNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("destroy notify:\twindow: %ld\n", g_print ("destroy notify:\twindow: %ld\n",
xevent->xdestroywindow.window - base_id); xevent->xdestroywindow.window - base_id));
event->any.type = GDK_DESTROY; event->any.type = GDK_DESTROY;
event->any.window = window; event->any.window = window;
@ -2434,9 +2417,9 @@ gdk_event_translate (GdkEvent *event,
case UnmapNotify: case UnmapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("unmap notify:\t\twindow: %ld\n", g_print ("unmap notify:\t\twindow: %ld\n",
xevent->xmap.window - base_id); xevent->xmap.window - base_id));
event->any.type = GDK_UNMAP; event->any.type = GDK_UNMAP;
event->any.window = window; event->any.window = window;
@ -2450,9 +2433,9 @@ gdk_event_translate (GdkEvent *event,
case MapNotify: case MapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("map notify:\t\twindow: %ld\n", g_print ("map notify:\t\twindow: %ld\n",
xevent->xmap.window - base_id); xevent->xmap.window - base_id));
event->any.type = GDK_MAP; event->any.type = GDK_MAP;
event->any.window = window; event->any.window = window;
@ -2463,9 +2446,9 @@ gdk_event_translate (GdkEvent *event,
case ReparentNotify: case ReparentNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("reparent notify:\twindow: %ld\n", g_print ("reparent notify:\twindow: %ld\n",
xevent->xreparent.window - base_id); xevent->xreparent.window - base_id));
/* Not currently handled */ /* Not currently handled */
break; break;
@ -2478,7 +2461,7 @@ gdk_event_translate (GdkEvent *event,
ConfigureNotify, xevent)) ConfigureNotify, xevent))
/*XSync (gdk_display, 0)*/; /*XSync (gdk_display, 0)*/;
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d\n", g_print ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d\n",
xevent->xconfigure.window - base_id, xevent->xconfigure.window - base_id,
xevent->xconfigure.x, xevent->xconfigure.x,
@ -2487,7 +2470,7 @@ gdk_event_translate (GdkEvent *event,
xevent->xconfigure.height, xevent->xconfigure.height,
xevent->xconfigure.border_width, xevent->xconfigure.border_width,
xevent->xconfigure.above - base_id, xevent->xconfigure.above - base_id,
xevent->xconfigure.override_redirect); xevent->xconfigure.override_redirect));
if (window_private) if (window_private)
{ {
@ -2540,9 +2523,9 @@ gdk_event_translate (GdkEvent *event,
case PropertyNotify: case PropertyNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("property notify:\twindow: %ld\n", g_print ("property notify:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->property.type = GDK_PROPERTY_NOTIFY; event->property.type = GDK_PROPERTY_NOTIFY;
event->property.window = window; event->property.window = window;
@ -2554,9 +2537,9 @@ gdk_event_translate (GdkEvent *event,
break; break;
case SelectionClear: case SelectionClear:
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("selection clear:\twindow: %ld\n", g_print ("selection clear:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_CLEAR; event->selection.type = GDK_SELECTION_CLEAR;
event->selection.window = window; event->selection.window = window;
@ -2567,9 +2550,9 @@ gdk_event_translate (GdkEvent *event,
break; break;
case SelectionRequest: case SelectionRequest:
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("selection request:\twindow: %ld\n", g_print ("selection request:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_REQUEST; event->selection.type = GDK_SELECTION_REQUEST;
event->selection.window = window; event->selection.window = window;
@ -2583,9 +2566,9 @@ gdk_event_translate (GdkEvent *event,
break; break;
case SelectionNotify: case SelectionNotify:
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("selection notify:\twindow: %ld\n", g_print ("selection notify:\twindow: %ld\n",
xevent->xproperty.window - base_id); xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_NOTIFY; event->selection.type = GDK_SELECTION_NOTIFY;
@ -2601,9 +2584,9 @@ gdk_event_translate (GdkEvent *event,
case ColormapNotify: case ColormapNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("colormap notify:\twindow: %ld\n", g_print ("colormap notify:\twindow: %ld\n",
xevent->xcolormap.window - base_id); xevent->xcolormap.window - base_id));
/* Not currently handled */ /* Not currently handled */
break; break;
@ -2611,9 +2594,9 @@ gdk_event_translate (GdkEvent *event,
case ClientMessage: case ClientMessage:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("client message:\twindow: %ld\n", g_print ("client message:\twindow: %ld\n",
xevent->xclient.window - base_id); xevent->xclient.window - base_id));
/* Client messages are the means of the window manager /* Client messages are the means of the window manager
* communicating with a program. We'll first check to * communicating with a program. We'll first check to
@ -2635,9 +2618,9 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("delete window:\t\twindow: %ld\n", g_print ("delete window:\t\twindow: %ld\n",
xevent->xclient.window - base_id); xevent->xclient.window - base_id));
event->any.type = GDK_DELETE; event->any.type = GDK_DELETE;
event->any.window = window; event->any.window = window;
@ -2653,11 +2636,9 @@ gdk_event_translate (GdkEvent *event,
Atom reptype = 0; Atom reptype = 0;
event->dropenter.u.allflags = xevent->xclient.data.l[1]; event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifndef DEBUG_DND
if (gdk_show_events) GDK_NOTE (DND, g_print ("GDK_DROP_ENTER [%d][%d]\n",
#endif window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply));
g_print ("GDK_DROP_ENTER [%d][%d]\n",
window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply);
return_val = FALSE; return_val = FALSE;
/* Now figure out if we really want this drop... /* Now figure out if we really want this drop...
@ -2694,18 +2675,18 @@ gdk_event_translate (GdkEvent *event,
event->any.window = window; event->any.window = window;
event->dropenter.requestor = replyev.xclient.window; event->dropenter.requestor = replyev.xclient.window;
event->dropenter.u.allflags = xevent->xclient.data.l[1]; event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifdef DEBUG_DND
g_print("We sent a GDK_DROP_ENTER on to Gtk\n"); GDK_NOTE (DND, g_print("We sent a GDK_DROP_ENTER on to Gtk\n"));
#endif
return_val = TRUE; return_val = TRUE;
} }
} }
else if (xevent->xclient.message_type == gdk_dnd.gdk_XdeLeave) else if (xevent->xclient.message_type == gdk_dnd.gdk_XdeLeave)
{ {
#ifndef DEBUG_DND #ifdef G_ENABLE_DEBUG
if (gdk_show_events) if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
#endif
g_print ("GDK_DROP_LEAVE\n"); g_print ("GDK_DROP_LEAVE\n");
#endif
if (window_private && window_private->dnd_drop_enabled) if (window_private && window_private->dnd_drop_enabled)
{ {
event->dropleave.type = GDK_DROP_LEAVE; event->dropleave.type = GDK_DROP_LEAVE;
@ -2723,10 +2704,10 @@ gdk_event_translate (GdkEvent *event,
* make sure to only handle requests from the window the cursor is * make sure to only handle requests from the window the cursor is
* over * over
*/ */
#ifndef DEBUG_DND #ifdef G_ENABLE_DEBUG
if (gdk_show_events) if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
#endif
g_print ("GDK_DRAG_REQUEST\n"); g_print ("GDK_DRAG_REQUEST\n");
#endif
event->dragrequest.u.allflags = xevent->xclient.data.l[1]; event->dragrequest.u.allflags = xevent->xclient.data.l[1];
return_val = FALSE; return_val = FALSE;
@ -2778,10 +2759,10 @@ gdk_event_translate (GdkEvent *event,
gulong tmp_long; gulong tmp_long;
guchar *tmp_charptr; guchar *tmp_charptr;
#ifndef DEBUG_DND #ifdef G_ENABLE_DEBUG
if(gdk_show_events) if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
#endif g_print("GDK_DROP_DATA_AVAIL\n");
g_print("GDK_DROP_DATA_AVAIL\n"); #endif
event->dropdataavailable.u.allflags = xevent->xclient.data.l[1]; event->dropdataavailable.u.allflags = xevent->xclient.data.l[1];
if(window if(window
/* No preview of data ATM */ /* No preview of data ATM */
@ -2809,10 +2790,8 @@ gdk_event_translate (GdkEvent *event,
} }
else else
{ {
#ifdef DEBUG_DND GDK_NOTE (DND, g_print("XGetWindowProperty got us %ld bytes\n",
g_print("XGetWindowProperty got us %d bytes\n", event->dropdataavailable.data_numbytes));
event->dropdataavailable.data_numbytes);
#endif
event->dropdataavailable.data = event->dropdataavailable.data =
g_malloc (event->dropdataavailable.data_numbytes); g_malloc (event->dropdataavailable.data_numbytes);
memcpy (event->dropdataavailable.data, memcpy (event->dropdataavailable.data,
@ -2844,8 +2823,8 @@ gdk_event_translate (GdkEvent *event,
case MappingNotify: case MappingNotify:
/* Print debugging info. /* Print debugging info.
*/ */
if (gdk_show_events) GDK_NOTE (EVENTS,
g_print ("mapping notify\n"); g_print ("mapping notify\n"));
/* Let XLib know that there is a new keyboard mapping. /* Let XLib know that there is a new keyboard mapping.
*/ */
@ -3569,9 +3548,9 @@ gdk_ic_cleanup (void)
destroyed++; destroyed++;
} }
} }
if (gdk_debug_level >= 1 && destroyed > 0) if ((gdk_debug_flags & GDK_DEBUG_XIM) && destroyed > 0)
{ {
g_warning ("Cleanuped %i IC\n", destroyed); g_warning ("Cleaned up %i IC(s)\n", destroyed);
} }
g_list_free(xim_ic_list); g_list_free(xim_ic_list);
xim_ic_list = NULL; xim_ic_list = NULL;

View File

@ -201,7 +201,7 @@ gdk_visual_init ()
break; break;
} }
if (gdk_debug_level >= 1) if (gdk_debug_flags & GDK_DEBUG_MISC)
for (i = 0; i < nvisuals; i++) for (i = 0; i < nvisuals; i++)
g_print ("visual: %s: %d\n", g_print ("visual: %s: %d\n",
visual_names[visuals[i].visual.type], visual_names[visuals[i].visual.type],

View File

@ -1,6 +1,9 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_INIT(glist.c) AC_INIT(glist.c)
# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}
dnl Initialize automake stuff dnl Initialize automake stuff
AM_INIT_AUTOMAKE(glib, 0.99.3) AM_INIT_AUTOMAKE(glib, 0.99.3)
@ -15,16 +18,18 @@ AM_MAINTAINER_MODE
AC_CANONICAL_HOST AC_CANONICAL_HOST
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]], AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=minimum]],,enable_debug=minimum)
if test "x$enable_debug" = "xyes"; then
DEBUGFLAG="-g"
fi)
AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]], AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
, enable_ansi=no) , enable_ansi=no)
if test -n "$DEBUGFLAG"; then if test "x$enable_debug" = "xyes"; then
test "$cflags_set" = set || CFLAGS="$DEBUGFLAG" test "$cflags_set" = set || CFLAGS="-g"
CFLAGS="$CFLAGS -DG_ENABLE_DEBUG"
else
if test "x$enable_debug" = "xno"; then
CFLAGS="$CFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
fi
fi fi
# Checks for programs. # Checks for programs.

View File

@ -182,6 +182,13 @@
* in order to support gcc's __PRETTY_FUNCTION__ capability. * in order to support gcc's __PRETTY_FUNCTION__ capability.
*/ */
#ifdef G_DISABLE_ASSERT
#define g_assert(expr)
#define g_assert_not_reached()
#else /* !G_DISABLE_ASSERT */
#ifdef __GNUC__ #ifdef __GNUC__
#define g_assert(expr) G_STMT_START{\ #define g_assert(expr) G_STMT_START{\
@ -198,6 +205,33 @@
__LINE__, \ __LINE__, \
__PRETTY_FUNCTION__); }G_STMT_END __PRETTY_FUNCTION__); }G_STMT_END
#else /* !__GNUC__ */
#define g_assert(expr) G_STMT_START{\
if (!(expr)) \
g_error ("file %s: line %d: \"%s\"", \
__FILE__, \
__LINE__, \
#expr); }G_STMT_END
#define g_assert_not_reached() G_STMT_START{ \
g_error ("file %s: line %d: \"should not be reached\"", \
__FILE__, \
__LINE__); }G_STMT_END
#endif /* __GNUC__ */
#endif /* G_DISABLE_ASSERT */
#ifdef G_DISABLE_CHECKS
#define g_return_if_fail(expr)
#define g_return_val_if_fail(expr,val)
#else /* !G_DISABLE_CHECKS */
#ifdef __GNUC__
#define g_return_if_fail(expr) G_STMT_START{ \ #define g_return_if_fail(expr) G_STMT_START{ \
if (!(expr)) \ if (!(expr)) \
{ \ { \
@ -220,19 +254,7 @@
return val; \ return val; \
}; }G_STMT_END }; }G_STMT_END
#else /* __GNUC__ */ #else /* !__GNUC__ */
#define g_assert(expr) G_STMT_START{\
if (!(expr)) \
g_error ("file %s: line %d: \"%s\"", \
__FILE__, \
__LINE__, \
#expr); }G_STMT_END
#define g_assert_not_reached() G_STMT_START{ \
g_error ("file %s: line %d: \"should not be reached\"", \
__FILE__, \
__LINE__); }G_STMT_END
#define g_return_if_fail(expr) G_STMT_START{ \ #define g_return_if_fail(expr) G_STMT_START{ \
if (!(expr)) \ if (!(expr)) \
@ -254,8 +276,9 @@
return val; \ return val; \
}; }G_STMT_END }; }G_STMT_END
#endif /* __GNUC__ */ #endif /* !__GNUC__ */
#endif /* G_DISABLE_CHECKS */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -327,6 +350,7 @@ typedef struct _GListAllocator GListAllocator;
typedef struct _GStringChunk GStringChunk; typedef struct _GStringChunk GStringChunk;
typedef struct _GString GString; typedef struct _GString GString;
typedef struct _GArray GArray; typedef struct _GArray GArray;
typedef struct _GDebugKey GDebugKey;
typedef void (*GFunc) (gpointer data, gpointer user_data); typedef void (*GFunc) (gpointer data, gpointer user_data);
typedef void (*GHFunc) (gpointer key, gpointer value, gpointer user_data); typedef void (*GHFunc) (gpointer key, gpointer value, gpointer user_data);
@ -370,6 +394,12 @@ struct _GArray
guint len; guint len;
}; };
struct _GDebugKey
{
gchar *key;
guint value;
};
struct _GHashTable { gint dummy; }; struct _GHashTable { gint dummy; };
struct _GCache { gint dummy; }; struct _GCache { gint dummy; };
struct _GTree { gint dummy; }; struct _GTree { gint dummy; };
@ -650,6 +680,10 @@ GWarningFunc g_set_warning_handler (GWarningFunc func);
GPrintFunc g_set_message_handler (GPrintFunc func); GPrintFunc g_set_message_handler (GPrintFunc func);
GPrintFunc g_set_print_handler (GPrintFunc func); GPrintFunc g_set_print_handler (GPrintFunc func);
guint g_parse_debug_string (const gchar *string,
GDebugKey *keys,
guint nkeys);
void g_debug (char *progname); void g_debug (char *progname);
void g_attach_process (char *progname, int query); void g_attach_process (char *progname, int query);
void g_stack_trace (char *progname, int query); void g_stack_trace (char *progname, int query);

View File

@ -862,3 +862,50 @@ g_strcasecmp (const guchar *s1, const guchar *s2)
return ((gint) *s1 - (gint) *s2); return ((gint) *s1 - (gint) *s2);
#endif #endif
} }
guint
g_parse_debug_string (const gchar *string,
GDebugKey *keys,
guint nkeys)
{
guint i;
guint result = 0;
g_return_val_if_fail (string != NULL, 0);
if (!strcmp (string, "ALL"))
{
for (i=0; i<nkeys; i++)
result |= keys[i].value;
}
else
{
gchar *str = g_strdup (string);
gchar *p = str;
gchar *q;
gboolean done = FALSE;
while (*p && !done)
{
q = strchr (p, ':');
if (!q)
{
q = p + strlen(p);
done = TRUE;
}
*q = 0;
for (i=0; i<nkeys; i++)
if (!strcmp(keys[i].key, p))
result |= keys[i].value;
p = q+1;
}
g_free (str);
}
return result;
}

View File

@ -112,6 +112,7 @@ gtkinclude_HEADERS = \
gtkcontainer.h \ gtkcontainer.h \
gtkcurve.h \ gtkcurve.h \
gtkdata.h \ gtkdata.h \
gtkdebug.h \
gtkdialog.h \ gtkdialog.h \
gtkdrawingarea.h \ gtkdrawingarea.h \
gtkentry.h \ gtkentry.h \

View File

@ -141,11 +141,22 @@ static GdkColormap *gtk_colormap; /* The colormap to be used in creating new
* widgets. * widgets.
*/ */
guint gtk_debug_flags; /* Global GTK debug flag */
#ifdef G_ENABLE_DEBUG
static GDebugKey gtk_debug_keys[] = {
{"objects", GTK_DEBUG_OBJECTS}
};
#endif /* G_ENABLE_DEBUG */
void void
gtk_init (int *argc, gtk_init (int *argc,
char ***argv) char ***argv)
{ {
#ifdef G_ENABLE_DEBUG
gboolean debug_set = FALSE;
#endif
if (0) if (0)
{ {
g_set_error_handler (gtk_error); g_set_error_handler (gtk_error);
@ -154,11 +165,46 @@ gtk_init (int *argc,
g_set_print_handler (gtk_print); g_set_print_handler (gtk_print);
} }
/* Initialize "gdk". We simply pass along the 'argc' and 'argv' /* Initialize "gdk". We pass along the 'argc' and 'argv'
* parameters as they contain information that * parameters as they contain information that GDK uses
*/ */
gdk_init (argc, argv); gdk_init (argc, argv);
#ifdef G_ENABLE_DEBUG
if (argc && argv)
{
gint i;
for (i = 1; i < *argc;)
{
if ((*argv[i]) && strcmp ("--gtk-debug", (*argv)[i]) == 0)
{
(*argv)[i] = NULL;
if ((i + 1) < *argc && (*argv)[i + 1])
{
gtk_debug_flags = g_parse_debug_string ((*argv)[i+1],
gtk_debug_keys,
sizeof(gtk_debug_keys) / sizeof(GDebugKey));
debug_set = TRUE;
(*argv)[i + 1] = NULL;
i += 1;
}
}
i += 1;
}
}
if (!debug_set)
{
gchar *debug_string = getenv("GTK_DEBUG");
if (debug_string != NULL)
gtk_debug_flags = g_parse_debug_string (debug_string,
gtk_debug_keys,
sizeof(gtk_debug_keys) / sizeof(GDebugKey));
}
#endif /* G_ENABLE_DEBUG */
/* Initialize the default visual and colormap to be /* Initialize the default visual and colormap to be
* used in creating widgets. (We want to use the system * used in creating widgets. (We want to use the system
* defaults so as to be nice to the colormap). * defaults so as to be nice to the colormap).

View File

@ -84,7 +84,6 @@ static gint object_signals[LAST_SIGNAL] = { 0 };
static gint object_data_init = TRUE; static gint object_data_init = TRUE;
static GHashTable *object_data_ht = NULL; static GHashTable *object_data_ht = NULL;
static GMemChunk *object_data_mem_chunk = NULL; static GMemChunk *object_data_mem_chunk = NULL;
static GtkObjectData *object_data_free_list = NULL;
static GSList *object_data_id_list = NULL; static GSList *object_data_id_list = NULL;
static gint object_data_id_index = 0; static gint object_data_id_index = 0;
@ -146,9 +145,10 @@ gtk_object_init_type ()
object_type = gtk_type_unique (0, &object_info); object_type = gtk_type_unique (0, &object_info);
g_assert (object_type == GTK_TYPE_OBJECT); g_assert (object_type == GTK_TYPE_OBJECT);
#ifdef GTK_TRACE_OBJECTS #ifdef G_ENABLE_DEBUG
ATEXIT (gtk_object_debug); if (gtk_debug_flags & GTK_DEBUG_OBJECTS)
#endif /* GTK_TRACE_OBJECTS */ ATEXIT (gtk_object_debug);
#endif /* G_ENABLE_DEBUG */
} }
GtkType GtkType
@ -223,10 +223,13 @@ gtk_object_init (GtkObject *object)
object->ref_count = 1; object->ref_count = 1;
object->object_data = NULL; object->object_data = NULL;
#ifdef GTK_TRACE_OBJECTS #ifdef G_ENABLE_DEBUG
obj_count++; if (gtk_debug_flags & GTK_DEBUG_OBJECTS)
living_objs = g_slist_prepend (living_objs, object); {
#endif /* GTK_TRACE_OBJECTS */ obj_count++;
living_objs = g_slist_prepend (living_objs, object);
}
#endif /* G_ENABLE_DEBUG */
} }
/***************************************** /*****************************************
@ -1495,13 +1498,20 @@ gtk_object_unref (GtkObject *object)
if (object->ref_count == 0) if (object->ref_count == 0)
{ {
g_assert (g_slist_find (living_objs, object)); #ifdef G_ENABLE_DEBUG
living_objs = g_slist_remove (living_objs, object); if (gtk_debug_flags & GTK_DEBUG_OBJECTS)
{
g_assert (g_slist_find (living_objs, object));
living_objs = g_slist_remove (living_objs, object);
obj_count--;
}
#endif /* G_ENABLE_DEBUG */
object->klass->finalize (object); object->klass->finalize (object);
obj_count--;
} }
} }
#ifdef G_ENABLE_DEBUG
static GtkObject *gtk_trace_object = NULL; static GtkObject *gtk_trace_object = NULL;
void void
@ -1514,34 +1524,40 @@ gtk_trace_referencing (gpointer *o,
gboolean exists; gboolean exists;
GtkObject *object = (GtkObject*) o; GtkObject *object = (GtkObject*) o;
g_return_if_fail (object != NULL); if (gtk_debug_flags & GTK_DEBUG_OBJECTS)
g_return_if_fail (GTK_IS_OBJECT (object)); {
g_return_if_fail (object != NULL);
g_return_if_fail (GTK_IS_OBJECT (object));
exists = (g_slist_find (living_objs, object) != NULL); exists = (g_slist_find (living_objs, object) != NULL);
if (exists && if (exists &&
(object == gtk_trace_object || (object == gtk_trace_object ||
gtk_trace_object == (void*)42)) gtk_trace_object == (void*)42))
printf ("trace: object_%s: (%s:%p)->ref_count=%d%s (%s_f%02d:%d)\n", printf ("trace: object_%s: (%s:%p)->ref_count=%d%s (%s_f%02d:%d)\n",
do_ref ? "ref" : "unref", do_ref ? "ref" : "unref",
gtk_type_name (GTK_OBJECT_TYPE (object)), gtk_type_name (GTK_OBJECT_TYPE (object)),
object, object,
object->ref_count, object->ref_count,
do_ref ? " + 1" : " - 1 ", do_ref ? " + 1" : " - 1 ",
func, func,
local_frame, local_frame,
line); line);
if (!exists) if (!exists)
printf ("trace: object_%s(%p): no such object! (%s_f%02d:%d)\n", printf ("trace: object_%s(%p): no such object! (%s_f%02d:%d)\n",
do_ref ? "ref" : "unref", do_ref ? "ref" : "unref",
object, object,
func, func,
local_frame, local_frame,
line); line);
}
if (do_ref) if (do_ref)
gtk_object_ref (object); gtk_object_ref (object);
else else
gtk_object_unref (object); gtk_object_unref (object);
} }
#endif /* G_ENABLE_DEBUG */

View File

@ -18,11 +18,10 @@
#ifndef __GTK_OBJECT_H__ #ifndef __GTK_OBJECT_H__
#define __GTK_OBJECT_H__ #define __GTK_OBJECT_H__
#define GTK_TRACE_OBJECTS 1
#include <gtk/gtkenums.h> #include <gtk/gtkenums.h>
#include <gtk/gtktypeutils.h> #include <gtk/gtktypeutils.h>
#include <gtk/gtkdebug.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -35,12 +34,12 @@ extern "C" {
* before proceeding, but they are definately slower than their less * before proceeding, but they are definately slower than their less
* careful counterparts as they involve no less than 3 function calls. * careful counterparts as they involve no less than 3 function calls.
*/ */
#ifdef NDEBUG #ifdef GTK_NO_CHECK_CASTS
#define GTK_CHECK_CAST(obj,cast_type,cast) ((cast*) (obj)) #define GTK_CHECK_CAST(obj,cast_type,cast) ((cast*) (obj))
#define GTK_CHECK_CLASS_CAST(klass,cast_type,cast) ((cast*) (klass)) #define GTK_CHECK_CLASS_CAST(klass,cast_type,cast) ((cast*) (klass))
#else /* NDEBUG */ #else /* !GTK_NO_CHECK_CASTS */
#define GTK_CHECK_CAST(obj,cast_type,cast) \ #define GTK_CHECK_CAST(obj,cast_type,cast) \
((cast*) gtk_object_check_cast ((GtkObject*) (obj), cast_type)) ((cast*) gtk_object_check_cast ((GtkObject*) (obj), cast_type))
@ -48,7 +47,7 @@ extern "C" {
#define GTK_CHECK_CLASS_CAST(klass,cast_type,cast) \ #define GTK_CHECK_CLASS_CAST(klass,cast_type,cast) \
((cast*) gtk_object_check_class_cast ((GtkObjectClass*) (klass), cast_type)) ((cast*) gtk_object_check_class_cast ((GtkObjectClass*) (klass), cast_type))
#endif /* NDEBUG */ #endif /* GTK_NO_CHECK_CASTS */
/* Determines whether 'obj' is a type of 'otype'. /* Determines whether 'obj' is a type of 'otype'.
@ -304,7 +303,7 @@ void gtk_trace_referencing (gpointer *object,
guint line, guint line,
gboolean do_ref); gboolean do_ref);
#if defined (GTK_TRACE_OBJECTS) && defined (__GNUC__) #if G_ENABLE_DEBUG && defined (__GNUC__)
# define gtk_object_ref(o) G_STMT_START{static guint f=0;gtk_trace_referencing((gpointer)o,__PRETTY_FUNCTION__,++f,__LINE__, 1);f--;}G_STMT_END # define gtk_object_ref(o) G_STMT_START{static guint f=0;gtk_trace_referencing((gpointer)o,__PRETTY_FUNCTION__,++f,__LINE__, 1);f--;}G_STMT_END
# define gtk_object_unref(o) G_STMT_START{static guint f=0;gtk_trace_referencing((gpointer)o,__PRETTY_FUNCTION__,++f,__LINE__, 0);f--;}G_STMT_END # define gtk_object_unref(o) G_STMT_START{static guint f=0;gtk_trace_referencing((gpointer)o,__PRETTY_FUNCTION__,++f,__LINE__, 0);f--;}G_STMT_END
#endif /* GTK_TRACE_OBJECTS && __GNUC__ */ #endif /* GTK_TRACE_OBJECTS && __GNUC__ */