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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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]],
echo $enable_shm, enable_shm="yes")
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],
if test "x$enable_debug" = "xyes"; then
DEBUGFLAG="-g"
fi)
AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=minimum]],,enable_debug=minimum)
AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
, enable_ansi=no)
AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],
echo $enable_xim, enable_xim="yes")
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
test "$cflags_set" = set || CFLAGS="$DEBUGFLAG"
if test "x$enable_debug" = "xyes"; then
test "$cflags_set" = set || CFLAGS="-g"
CFLAGS="$CFLAGS -DG_ENABLE_DEBUG"
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
# 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"
/* #define DEBUG_DND 1 */ /* Shouldn't be needed much these days */
/* If you don't want to use gdk's signal handlers define this */
/* #define I_NEED_TO_ACTUALLY_DEBUG_MY_PROGRAMS 1 */
@ -227,6 +225,15 @@ static GList *putback_events = NULL;
static gulong base_id;
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;
char **argv_orig;
gboolean debug_set = FALSE;
argv_orig = malloc ((argc_orig + 1) * sizeof (char*));
for (i = 0; i < argc_orig; i++)
argv_orig[i] = g_strdup ((*argv)[i]);
@ -291,11 +300,30 @@ gdk_init (int *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;
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]);
(*argv)[i + 1] = NULL;
@ -307,33 +335,14 @@ gdk_init (int *argc,
(*argv)[i] = NULL;
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)
{
(*argv)[i] = NULL;
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)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_progname = (*argv)[i];
@ -342,7 +351,7 @@ gdk_init (int *argc,
}
else if (strcmp ("--class", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_progclass = (*argv)[i];
@ -352,7 +361,7 @@ gdk_init (int *argc,
#ifdef XINPUT_GXI
else if (strcmp ("--gxid_host", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_input_gxid_host = ((*argv)[i]);
@ -361,7 +370,7 @@ gdk_init (int *argc,
}
else if (strcmp ("--gxid_port", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_input_gxid_port = atoi ((*argv)[i]);
@ -372,7 +381,7 @@ gdk_init (int *argc,
#ifdef USE_XIM
else if (strcmp ("--xim-preedit", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0)
@ -389,7 +398,7 @@ gdk_init (int *argc,
}
else if (strcmp ("--xim-status", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0)
@ -427,6 +436,15 @@ gdk_init (int *argc,
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);
if (!gdk_display)
{
@ -440,12 +458,11 @@ gdk_init (int *argc,
*/
/* base_id = RESOURCE_BASE; */
base_id = 0;
if (gdk_show_events)
g_print ("base id: %lu\n", base_id);
GDK_NOTE (EVENTS, g_print ("base id: %lu\n", base_id));
connection_number = ConnectionNumber (gdk_display);
if (gdk_debug_level >= 1)
g_print ("connection number: %d\n", connection_number);
GDK_NOTE (MISC,
g_print ("connection number: %d\n", connection_number));
if (synchronize)
XSynchronize (gdk_display, True);
@ -927,31 +944,6 @@ gdk_event_free (GdkEvent *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
@ -975,7 +967,10 @@ gdk_set_debug_level (int level)
void
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
@ -984,16 +979,10 @@ gdk_set_use_xshm (gint use_xshm)
gdk_use_xshm = use_xshm;
}
gint
gdk_get_debug_level ()
{
return gdk_debug_level;
}
gint
gdk_get_show_events ()
{
return gdk_show_events;
return gdk_debug_flags & GDK_DEBUG_EVENTS;
}
gint
@ -1750,8 +1739,8 @@ gdk_event_translate (GdkEvent *event,
if (status == XBufferOverflow)
{ /* retry */
/* alloc adequate size of buffer */
if (gdk_debug_level >= 1)
g_print("XIM: overflow (required %i)\n", charcount);
GDK_NOTE (XIM,
g_print("XIM: overflow (required %i)\n", charcount));
while (buf_len <= charcount)
buf_len *= 2;
@ -1784,7 +1773,8 @@ gdk_event_translate (GdkEvent *event,
/* 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",
xevent->xkey.window - base_id,
@ -1794,6 +1784,7 @@ gdk_event_translate (GdkEvent *event,
g_print ("\t\tlength: %4d string: \"%s\"\n",
charcount, buf);
}
#endif /* G_ENABLE_DEBUG */
event->key.type = GDK_KEY_PRESS;
event->key.window = window;
@ -1818,11 +1809,11 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("key release:\t\twindow: %ld key: %12s %d\n",
xevent->xkey.window - base_id,
XKeysymToString (event->key.keyval),
event->key.keyval);
event->key.keyval));
event->key.type = GDK_KEY_RELEASE;
event->key.window = window;
@ -1837,12 +1828,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonPress:
/* 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",
window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button);
xevent->xbutton.button));
if (window_private &&
(window_private->extension_events != 0) &&
@ -1941,12 +1932,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonRelease:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("button release[%d]:\twindow: %ld x,y: %d %d button: %d\n",
window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button);
xevent->xbutton.button));
if (window_private &&
(window_private->extension_events != 0) &&
@ -2018,12 +2009,12 @@ gdk_event_translate (GdkEvent *event,
case MotionNotify:
/* 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",
xevent->xmotion.window - base_id,
xevent->xmotion.x, xevent->xmotion.y,
(xevent->xmotion.is_hint) ? "true" : "false",
dnd_drag_perhaps, gdk_dnd.drag_really);
dnd_drag_perhaps, gdk_dnd.drag_really));
if (window_private &&
(window_private->extension_events != 0) &&
@ -2075,10 +2066,9 @@ gdk_event_translate (GdkEvent *event,
x, y, &x, &y, &twin);
}
}
#if defined(DEBUG_DND) /* && defined(DEBUG_DND_MORE_DETAILS) */
g_print("Drag is now in window %#x, lastwin was %#x, ddc = %#x\n",
curwin, lastwin, dnd_drag_curwin);
#endif
GDK_NOTE (DND,
g_print("Drag is now in window %#lx, lastwin was %#lx, ddc = %#lx\n",
curwin, lastwin, dnd_drag_curwin));
if(curwin != dnd_drag_curwin && curwin != lastwin)
{
/* 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.width = dnd_drag_dropzone.height = 0;
dnd_drag_target = None;
#ifdef DEBUG_DND
g_print("curwin = %#x, lastwin = %#x, dnd_drag_curwin = %#x\n",
curwin, lastwin, dnd_drag_curwin);
#endif
GDK_NOTE (DND,
g_print("curwin = %#lx, lastwin = %#lx, dnd_drag_curwin = %#lx\n",
curwin, lastwin, dnd_drag_curwin));
XChangeActivePointerGrab(gdk_display,
ButtonMotionMask |
ButtonPressMask | ButtonReleaseMask,
@ -2139,13 +2129,11 @@ gdk_event_translate (GdkEvent *event,
case EnterNotify:
/* Print debugging info.
*/
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS))
if (gdk_show_events)
#endif
GDK_NOTE (EVENTS,
g_print ("enter notify:\t\twindow: %ld detail: %d subwin: %ld\n",
xevent->xcrossing.window - base_id,
xevent->xcrossing.detail,
xevent->xcrossing.subwindow - base_id);
xevent->xcrossing.subwindow - base_id));
/* Tell XInput stuff about it if appropriate */
if (window_private &&
@ -2188,21 +2176,20 @@ gdk_event_translate (GdkEvent *event,
break;
}
#ifdef DEBUG_DND
if(dnd_drag_perhaps)
{
g_print("We may[%d] have a drag into %#x = %#x\n",
gdk_dnd.drag_really,
xevent->xcrossing.window, real_sw->xwindow);
}
#endif
if ((gdk_debug_flags & GDK_DEBUG_DND) & dnd_drag_perhaps)
{
g_print("We may[%d] have a drag into %#lx = %#lx\n",
gdk_dnd.drag_really,
xevent->xcrossing.window, real_sw->xwindow);
}
if (dnd_drag_perhaps && gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow))
{
gdk_dnd.drag_really = 0;
#ifdef DEBUG_DND
g_print("Ungrabbed\n");
#endif
GDK_NOTE (DND, g_print("Ungrabbed\n"));
gdk_dnd.drag_numwindows = 0;
g_free(gdk_dnd.drag_startwindows);
gdk_dnd.drag_startwindows = NULL;
@ -2217,12 +2204,10 @@ gdk_event_translate (GdkEvent *event,
case LeaveNotify:
/* Print debugging info.
*/
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS))
if (gdk_show_events)
#endif
GDK_NOTE (EVENTS,
g_print ("leave notify:\t\twindow: %ld detail: %d subwin: %ld\n",
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.window = window;
@ -2258,14 +2243,12 @@ gdk_event_translate (GdkEvent *event,
event->crossing.detail = GDK_NOTIFY_UNKNOWN;
break;
}
#ifdef DEBUG_DND
if(dnd_drag_perhaps)
if ((gdk_debug_flags & GDK_DEBUG_DND) & 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,
xevent->xcrossing.window, real_sw->xwindow);
}
#endif
if (dnd_drag_perhaps && !gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow))
{
@ -2295,10 +2278,10 @@ gdk_event_translate (GdkEvent *event,
case NotifyNonlinear:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("focus %s:\t\twindow: %ld\n",
(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.window = window;
@ -2314,8 +2297,8 @@ gdk_event_translate (GdkEvent *event,
case KeymapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
g_print ("keymap notify\n");
GDK_NOTE (EVENTS,
g_print ("keymap notify\n"));
/* Not currently handled */
break;
@ -2323,11 +2306,11 @@ gdk_event_translate (GdkEvent *event,
case Expose:
/* 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",
xevent->xexpose.window - base_id, xevent->xexpose.count,
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.window = window;
@ -2343,9 +2326,9 @@ gdk_event_translate (GdkEvent *event,
case GraphicsExpose:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("graphics expose:\tdrawable: %ld\n",
xevent->xgraphicsexpose.drawable - base_id);
xevent->xgraphicsexpose.drawable - base_id));
event->expose.type = GDK_EXPOSE;
event->expose.window = window;
@ -2361,9 +2344,9 @@ gdk_event_translate (GdkEvent *event,
case NoExpose:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2374,7 +2357,7 @@ gdk_event_translate (GdkEvent *event,
case VisibilityNotify:
/* Print debugging info.
*/
if (gdk_show_events)
if (gdk_debug_flags & GDK_DEBUG_EVENTS)
switch (xevent->xvisibility.state)
{
case VisibilityFullyObscured:
@ -2419,9 +2402,9 @@ gdk_event_translate (GdkEvent *event,
case DestroyNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("destroy notify:\twindow: %ld\n",
xevent->xdestroywindow.window - base_id);
xevent->xdestroywindow.window - base_id));
event->any.type = GDK_DESTROY;
event->any.window = window;
@ -2434,9 +2417,9 @@ gdk_event_translate (GdkEvent *event,
case UnmapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2450,9 +2433,9 @@ gdk_event_translate (GdkEvent *event,
case MapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2463,9 +2446,9 @@ gdk_event_translate (GdkEvent *event,
case ReparentNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("reparent notify:\twindow: %ld\n",
xevent->xreparent.window - base_id);
xevent->xreparent.window - base_id));
/* Not currently handled */
break;
@ -2478,7 +2461,7 @@ gdk_event_translate (GdkEvent *event,
ConfigureNotify, xevent))
/*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",
xevent->xconfigure.window - base_id,
xevent->xconfigure.x,
@ -2487,7 +2470,7 @@ gdk_event_translate (GdkEvent *event,
xevent->xconfigure.height,
xevent->xconfigure.border_width,
xevent->xconfigure.above - base_id,
xevent->xconfigure.override_redirect);
xevent->xconfigure.override_redirect));
if (window_private)
{
@ -2540,9 +2523,9 @@ gdk_event_translate (GdkEvent *event,
case PropertyNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2554,9 +2537,9 @@ gdk_event_translate (GdkEvent *event,
break;
case SelectionClear:
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2567,9 +2550,9 @@ gdk_event_translate (GdkEvent *event,
break;
case SelectionRequest:
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2583,9 +2566,9 @@ gdk_event_translate (GdkEvent *event,
break;
case SelectionNotify:
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("selection notify:\twindow: %ld\n",
xevent->xproperty.window - base_id);
xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_NOTIFY;
@ -2601,9 +2584,9 @@ gdk_event_translate (GdkEvent *event,
case ColormapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("colormap notify:\twindow: %ld\n",
xevent->xcolormap.window - base_id);
xevent->xcolormap.window - base_id));
/* Not currently handled */
break;
@ -2611,9 +2594,9 @@ gdk_event_translate (GdkEvent *event,
case ClientMessage:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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
* communicating with a program. We'll first check to
@ -2635,9 +2618,9 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2653,11 +2636,9 @@ gdk_event_translate (GdkEvent *event,
Atom reptype = 0;
event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifndef DEBUG_DND
if (gdk_show_events)
#endif
g_print ("GDK_DROP_ENTER [%d][%d]\n",
window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply);
GDK_NOTE (DND, g_print ("GDK_DROP_ENTER [%d][%d]\n",
window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply));
return_val = FALSE;
/* Now figure out if we really want this drop...
@ -2694,18 +2675,18 @@ gdk_event_translate (GdkEvent *event,
event->any.window = window;
event->dropenter.requestor = replyev.xclient.window;
event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifdef DEBUG_DND
g_print("We sent a GDK_DROP_ENTER on to Gtk\n");
#endif
GDK_NOTE (DND, g_print("We sent a GDK_DROP_ENTER on to Gtk\n"));
return_val = TRUE;
}
}
else if (xevent->xclient.message_type == gdk_dnd.gdk_XdeLeave)
{
#ifndef DEBUG_DND
if (gdk_show_events)
#endif
#ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
g_print ("GDK_DROP_LEAVE\n");
#endif
if (window_private && window_private->dnd_drop_enabled)
{
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
* over
*/
#ifndef DEBUG_DND
if (gdk_show_events)
#endif
#ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
g_print ("GDK_DRAG_REQUEST\n");
#endif
event->dragrequest.u.allflags = xevent->xclient.data.l[1];
return_val = FALSE;
@ -2778,10 +2759,10 @@ gdk_event_translate (GdkEvent *event,
gulong tmp_long;
guchar *tmp_charptr;
#ifndef DEBUG_DND
if(gdk_show_events)
#endif
g_print("GDK_DROP_DATA_AVAIL\n");
#ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
g_print("GDK_DROP_DATA_AVAIL\n");
#endif
event->dropdataavailable.u.allflags = xevent->xclient.data.l[1];
if(window
/* No preview of data ATM */
@ -2809,10 +2790,8 @@ gdk_event_translate (GdkEvent *event,
}
else
{
#ifdef DEBUG_DND
g_print("XGetWindowProperty got us %d bytes\n",
event->dropdataavailable.data_numbytes);
#endif
GDK_NOTE (DND, g_print("XGetWindowProperty got us %ld bytes\n",
event->dropdataavailable.data_numbytes));
event->dropdataavailable.data =
g_malloc (event->dropdataavailable.data_numbytes);
memcpy (event->dropdataavailable.data,
@ -2844,8 +2823,8 @@ gdk_event_translate (GdkEvent *event,
case MappingNotify:
/* Print debugging info.
*/
if (gdk_show_events)
g_print ("mapping notify\n");
GDK_NOTE (EVENTS,
g_print ("mapping notify\n"));
/* Let XLib know that there is a new keyboard mapping.
*/
@ -3569,9 +3548,9 @@ gdk_ic_cleanup (void)
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);
xim_ic_list = NULL;

View File

@ -42,7 +42,6 @@ void gdk_event_put (GdkEvent *event);
GdkEvent *gdk_event_copy (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_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_GRAYSCALE:
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is %s\n",
(visual->type == GDK_VISUAL_STATIC_GRAY) ?
"GDK_VISUAL_STATIC_GRAY" :
"GDK_VISUAL_GRAYSCALE");
"GDK_VISUAL_GRAYSCALE"));
if (GDK_VISUAL_XVISUAL (cc->visual)->map_entries == 2)
init_bw (cc);
@ -566,26 +566,26 @@ gdk_color_context_new (GdkVisual *visual,
break;
case GDK_VISUAL_TRUE_COLOR: /* shifts */
if (gdk_debug_level >= 1)
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n");
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n"));
init_true_color (cc);
break;
case GDK_VISUAL_DIRECT_COLOR: /* shifts and fake CLUT */
if (gdk_debug_level >= 1)
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n");
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n"));
init_direct_color (cc);
break;
case GDK_VISUAL_STATIC_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",
(visual->type == GDK_VISUAL_STATIC_COLOR) ?
"GDK_VISUAL_STATIC_COLOR" :
"GDK_VISUAL_PSEUDO_COLOR");
"GDK_VISUAL_PSEUDO_COLOR"));
init_color (cc);
break;
@ -607,9 +607,9 @@ gdk_color_context_new (GdkVisual *visual,
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",
cc->visual->depth, cc->num_colors);
cc->visual->depth, cc->num_colors));
/* check if we need to initialize a hash table */
@ -811,10 +811,10 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
{
cc->max_colors *= 2;
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixel: "
"resizing CLUT to %i entries\n",
cc->max_colors);
cc->max_colors));
cc->clut = g_realloc (cc->clut,
cc->max_colors * sizeof (gulong));
@ -906,9 +906,9 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
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; "
"(%i colors allocated so far)\n", ncolors, cc->num_allocated);
"(%i colors allocated so far)\n", ncolors, cc->num_allocated));
return;
}
@ -1031,10 +1031,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
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 "
"%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;
}
@ -1102,10 +1102,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
}
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, "
"%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
@ -1176,9 +1176,9 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
}
#ifdef DEBUG
else
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
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
}
}
@ -1187,10 +1187,10 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
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 "
"(%i colors allocated so far)\n",
ncolors, cc->num_allocated);
ncolors, cc->num_allocated));
return;
}
@ -1293,11 +1293,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0))
{
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact and %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;
}
@ -1364,11 +1364,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
}
while (++idx < nopen);
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact, %i close, %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));
}
gint

View File

@ -20,8 +20,7 @@
#include "gdktypes.h"
#include "gdkprivate.h"
gint gdk_debug_level = 0;
gint gdk_show_events = FALSE;
guint gdk_debug_flags = 0;
gint gdk_use_xshm = TRUE;
gchar *gdk_display_name = 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.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",
(event->button.type == GDK_BUTTON_PRESS) ? "press" : "release",
xdbe->window,
xdbe->deviceid,
event->button.x, event->button.y,
xdbe->button);
xdbe->button));
return TRUE;
}
@ -597,12 +597,12 @@ gdk_input_common_other_event (GdkEvent *event,
{
XDeviceKeyEvent *xdke = (XDeviceKeyEvent *)(xevent);
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n",
(event->key.type == GDK_KEY_PRESS) ? "press" : "release",
xdke->window,
xdke->deviceid,
xdke->keycode);
xdke->keycode));
if (xdke->keycode < gdkdev->min_keycode ||
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 (gdk_show_events)
g_print ("\t\ttranslation - NONE\n");
GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - NONE\n"));
return FALSE;
}
@ -644,10 +644,10 @@ gdk_input_common_other_event (GdkEvent *event,
event->key.string = g_new0 (gchar, 1);
}
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n",
event->key.keyval,
event->key.state);
event->key.state));
return TRUE;
}
@ -672,13 +672,13 @@ gdk_input_common_other_event (GdkEvent *event,
event->motion.source = gdkdev->info.source;
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",
xdme->window,
xdme->deviceid,
event->motion.x, event->motion.y,
event->motion.state,
(xdme->is_hint) ? "true" : "false");
(xdme->is_hint) ? "true" : "false"));
return TRUE;

View File

@ -170,7 +170,6 @@ typedef struct _GdkICPrivate GdkICPrivate;
#endif /* USE_XIM */
struct _GdkColorContextPrivate
{
GdkColorContext color_context;
@ -178,6 +177,13 @@ struct _GdkColorContextPrivate
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_visual_init (void);
@ -219,6 +225,22 @@ extern gchar *gdk_progclass;
extern gint gdk_error_code;
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
}

View File

@ -201,7 +201,7 @@ gdk_visual_init ()
break;
}
if (gdk_debug_level >= 1)
if (gdk_debug_flags & GDK_DEBUG_MISC)
for (i = 0; i < nvisuals; i++)
g_print ("visual: %s: %d\n",
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_GRAYSCALE:
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is %s\n",
(visual->type == GDK_VISUAL_STATIC_GRAY) ?
"GDK_VISUAL_STATIC_GRAY" :
"GDK_VISUAL_GRAYSCALE");
"GDK_VISUAL_GRAYSCALE"));
if (GDK_VISUAL_XVISUAL (cc->visual)->map_entries == 2)
init_bw (cc);
@ -566,26 +566,26 @@ gdk_color_context_new (GdkVisual *visual,
break;
case GDK_VISUAL_TRUE_COLOR: /* shifts */
if (gdk_debug_level >= 1)
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n");
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_TRUE_COLOR\n"));
init_true_color (cc);
break;
case GDK_VISUAL_DIRECT_COLOR: /* shifts and fake CLUT */
if (gdk_debug_level >= 1)
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n");
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_new: visual class is GDK_VISUAL_DIRECT_COLOR\n"));
init_direct_color (cc);
break;
case GDK_VISUAL_STATIC_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",
(visual->type == GDK_VISUAL_STATIC_COLOR) ?
"GDK_VISUAL_STATIC_COLOR" :
"GDK_VISUAL_PSEUDO_COLOR");
"GDK_VISUAL_PSEUDO_COLOR"));
init_color (cc);
break;
@ -607,9 +607,9 @@ gdk_color_context_new (GdkVisual *visual,
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",
cc->visual->depth, cc->num_colors);
cc->visual->depth, cc->num_colors));
/* check if we need to initialize a hash table */
@ -811,10 +811,10 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
{
cc->max_colors *= 2;
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixel: "
"resizing CLUT to %i entries\n",
cc->max_colors);
cc->max_colors));
cc->clut = g_realloc (cc->clut,
cc->max_colors * sizeof (gulong));
@ -906,9 +906,9 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
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; "
"(%i colors allocated so far)\n", ncolors, cc->num_allocated);
"(%i colors allocated so far)\n", ncolors, cc->num_allocated));
return;
}
@ -1031,10 +1031,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
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 "
"%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;
}
@ -1102,10 +1102,10 @@ gdk_color_context_get_pixels (GdkColorContext *cc,
}
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, "
"%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
@ -1176,9 +1176,9 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
}
#ifdef DEBUG
else
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
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
}
}
@ -1187,10 +1187,10 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
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 "
"(%i colors allocated so far)\n",
ncolors, cc->num_allocated);
ncolors, cc->num_allocated));
return;
}
@ -1293,11 +1293,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
if ((ncols == ncolors) || (nopen == 0))
{
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact and %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;
}
@ -1364,11 +1364,11 @@ gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
}
while (++idx < nopen);
if (gdk_debug_level >= 1)
GDK_NOTE (COLOR_CONTEXT,
g_print ("gdk_color_context_get_pixels_incremental: "
"got %i colors, %i exact, %i close, %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));
}
gint

View File

@ -20,8 +20,7 @@
#include "gdktypes.h"
#include "gdkprivate.h"
gint gdk_debug_level = 0;
gint gdk_show_events = FALSE;
guint gdk_debug_flags = 0;
gint gdk_use_xshm = TRUE;
gchar *gdk_display_name = 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.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",
(event->button.type == GDK_BUTTON_PRESS) ? "press" : "release",
xdbe->window,
xdbe->deviceid,
event->button.x, event->button.y,
xdbe->button);
xdbe->button));
return TRUE;
}
@ -597,12 +597,12 @@ gdk_input_common_other_event (GdkEvent *event,
{
XDeviceKeyEvent *xdke = (XDeviceKeyEvent *)(xevent);
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n",
(event->key.type == GDK_KEY_PRESS) ? "press" : "release",
xdke->window,
xdke->deviceid,
xdke->keycode);
xdke->keycode));
if (xdke->keycode < gdkdev->min_keycode ||
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 (gdk_show_events)
g_print ("\t\ttranslation - NONE\n");
GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - NONE\n"));
return FALSE;
}
@ -644,10 +644,10 @@ gdk_input_common_other_event (GdkEvent *event,
event->key.string = g_new0 (gchar, 1);
}
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n",
event->key.keyval,
event->key.state);
event->key.state));
return TRUE;
}
@ -672,13 +672,13 @@ gdk_input_common_other_event (GdkEvent *event,
event->motion.source = gdkdev->info.source;
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",
xdme->window,
xdme->deviceid,
event->motion.x, event->motion.y,
event->motion.state,
(xdme->is_hint) ? "true" : "false");
(xdme->is_hint) ? "true" : "false"));
return TRUE;

View File

@ -17,8 +17,6 @@
*/
#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 */
/* #define I_NEED_TO_ACTUALLY_DEBUG_MY_PROGRAMS 1 */
@ -227,6 +225,15 @@ static GList *putback_events = NULL;
static gulong base_id;
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;
char **argv_orig;
gboolean debug_set = FALSE;
argv_orig = malloc ((argc_orig + 1) * sizeof (char*));
for (i = 0; i < argc_orig; i++)
argv_orig[i] = g_strdup ((*argv)[i]);
@ -291,11 +300,30 @@ gdk_init (int *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;
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]);
(*argv)[i + 1] = NULL;
@ -307,33 +335,14 @@ gdk_init (int *argc,
(*argv)[i] = NULL;
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)
{
(*argv)[i] = NULL;
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)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_progname = (*argv)[i];
@ -342,7 +351,7 @@ gdk_init (int *argc,
}
else if (strcmp ("--class", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_progclass = (*argv)[i];
@ -352,7 +361,7 @@ gdk_init (int *argc,
#ifdef XINPUT_GXI
else if (strcmp ("--gxid_host", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_input_gxid_host = ((*argv)[i]);
@ -361,7 +370,7 @@ gdk_init (int *argc,
}
else if (strcmp ("--gxid_port", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
gdk_input_gxid_port = atoi ((*argv)[i]);
@ -372,7 +381,7 @@ gdk_init (int *argc,
#ifdef USE_XIM
else if (strcmp ("--xim-preedit", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0)
@ -389,7 +398,7 @@ gdk_init (int *argc,
}
else if (strcmp ("--xim-status", (*argv)[i]) == 0)
{
if ((i + 1) < *argc)
if ((i + 1) < *argc && (*argv)[i + 1])
{
(*argv)[i++] = NULL;
if (strcmp ("none", (*argv)[i]) == 0)
@ -427,6 +436,15 @@ gdk_init (int *argc,
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);
if (!gdk_display)
{
@ -440,12 +458,11 @@ gdk_init (int *argc,
*/
/* base_id = RESOURCE_BASE; */
base_id = 0;
if (gdk_show_events)
g_print ("base id: %lu\n", base_id);
GDK_NOTE (EVENTS, g_print ("base id: %lu\n", base_id));
connection_number = ConnectionNumber (gdk_display);
if (gdk_debug_level >= 1)
g_print ("connection number: %d\n", connection_number);
GDK_NOTE (MISC,
g_print ("connection number: %d\n", connection_number));
if (synchronize)
XSynchronize (gdk_display, True);
@ -927,31 +944,6 @@ gdk_event_free (GdkEvent *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
@ -975,7 +967,10 @@ gdk_set_debug_level (int level)
void
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
@ -984,16 +979,10 @@ gdk_set_use_xshm (gint use_xshm)
gdk_use_xshm = use_xshm;
}
gint
gdk_get_debug_level ()
{
return gdk_debug_level;
}
gint
gdk_get_show_events ()
{
return gdk_show_events;
return gdk_debug_flags & GDK_DEBUG_EVENTS;
}
gint
@ -1750,8 +1739,8 @@ gdk_event_translate (GdkEvent *event,
if (status == XBufferOverflow)
{ /* retry */
/* alloc adequate size of buffer */
if (gdk_debug_level >= 1)
g_print("XIM: overflow (required %i)\n", charcount);
GDK_NOTE (XIM,
g_print("XIM: overflow (required %i)\n", charcount));
while (buf_len <= charcount)
buf_len *= 2;
@ -1784,7 +1773,8 @@ gdk_event_translate (GdkEvent *event,
/* 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",
xevent->xkey.window - base_id,
@ -1794,6 +1784,7 @@ gdk_event_translate (GdkEvent *event,
g_print ("\t\tlength: %4d string: \"%s\"\n",
charcount, buf);
}
#endif /* G_ENABLE_DEBUG */
event->key.type = GDK_KEY_PRESS;
event->key.window = window;
@ -1818,11 +1809,11 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("key release:\t\twindow: %ld key: %12s %d\n",
xevent->xkey.window - base_id,
XKeysymToString (event->key.keyval),
event->key.keyval);
event->key.keyval));
event->key.type = GDK_KEY_RELEASE;
event->key.window = window;
@ -1837,12 +1828,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonPress:
/* 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",
window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button);
xevent->xbutton.button));
if (window_private &&
(window_private->extension_events != 0) &&
@ -1941,12 +1932,12 @@ gdk_event_translate (GdkEvent *event,
case ButtonRelease:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("button release[%d]:\twindow: %ld x,y: %d %d button: %d\n",
window_private?window_private->dnd_drag_enabled:0,
xevent->xbutton.window - base_id,
xevent->xbutton.x, xevent->xbutton.y,
xevent->xbutton.button);
xevent->xbutton.button));
if (window_private &&
(window_private->extension_events != 0) &&
@ -2018,12 +2009,12 @@ gdk_event_translate (GdkEvent *event,
case MotionNotify:
/* 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",
xevent->xmotion.window - base_id,
xevent->xmotion.x, xevent->xmotion.y,
(xevent->xmotion.is_hint) ? "true" : "false",
dnd_drag_perhaps, gdk_dnd.drag_really);
dnd_drag_perhaps, gdk_dnd.drag_really));
if (window_private &&
(window_private->extension_events != 0) &&
@ -2075,10 +2066,9 @@ gdk_event_translate (GdkEvent *event,
x, y, &x, &y, &twin);
}
}
#if defined(DEBUG_DND) /* && defined(DEBUG_DND_MORE_DETAILS) */
g_print("Drag is now in window %#x, lastwin was %#x, ddc = %#x\n",
curwin, lastwin, dnd_drag_curwin);
#endif
GDK_NOTE (DND,
g_print("Drag is now in window %#lx, lastwin was %#lx, ddc = %#lx\n",
curwin, lastwin, dnd_drag_curwin));
if(curwin != dnd_drag_curwin && curwin != lastwin)
{
/* 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.width = dnd_drag_dropzone.height = 0;
dnd_drag_target = None;
#ifdef DEBUG_DND
g_print("curwin = %#x, lastwin = %#x, dnd_drag_curwin = %#x\n",
curwin, lastwin, dnd_drag_curwin);
#endif
GDK_NOTE (DND,
g_print("curwin = %#lx, lastwin = %#lx, dnd_drag_curwin = %#lx\n",
curwin, lastwin, dnd_drag_curwin));
XChangeActivePointerGrab(gdk_display,
ButtonMotionMask |
ButtonPressMask | ButtonReleaseMask,
@ -2139,13 +2129,11 @@ gdk_event_translate (GdkEvent *event,
case EnterNotify:
/* Print debugging info.
*/
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS))
if (gdk_show_events)
#endif
GDK_NOTE (EVENTS,
g_print ("enter notify:\t\twindow: %ld detail: %d subwin: %ld\n",
xevent->xcrossing.window - base_id,
xevent->xcrossing.detail,
xevent->xcrossing.subwindow - base_id);
xevent->xcrossing.subwindow - base_id));
/* Tell XInput stuff about it if appropriate */
if (window_private &&
@ -2188,21 +2176,20 @@ gdk_event_translate (GdkEvent *event,
break;
}
#ifdef DEBUG_DND
if(dnd_drag_perhaps)
{
g_print("We may[%d] have a drag into %#x = %#x\n",
gdk_dnd.drag_really,
xevent->xcrossing.window, real_sw->xwindow);
}
#endif
if ((gdk_debug_flags & GDK_DEBUG_DND) & dnd_drag_perhaps)
{
g_print("We may[%d] have a drag into %#lx = %#lx\n",
gdk_dnd.drag_really,
xevent->xcrossing.window, real_sw->xwindow);
}
if (dnd_drag_perhaps && gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow))
{
gdk_dnd.drag_really = 0;
#ifdef DEBUG_DND
g_print("Ungrabbed\n");
#endif
GDK_NOTE (DND, g_print("Ungrabbed\n"));
gdk_dnd.drag_numwindows = 0;
g_free(gdk_dnd.drag_startwindows);
gdk_dnd.drag_startwindows = NULL;
@ -2217,12 +2204,10 @@ gdk_event_translate (GdkEvent *event,
case LeaveNotify:
/* Print debugging info.
*/
#if !(defined(DEBUG_DND) && defined(DEBUG_DND_MORE_DETAILS))
if (gdk_show_events)
#endif
GDK_NOTE (EVENTS,
g_print ("leave notify:\t\twindow: %ld detail: %d subwin: %ld\n",
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.window = window;
@ -2258,14 +2243,12 @@ gdk_event_translate (GdkEvent *event,
event->crossing.detail = GDK_NOTIFY_UNKNOWN;
break;
}
#ifdef DEBUG_DND
if(dnd_drag_perhaps)
if ((gdk_debug_flags & GDK_DEBUG_DND) & 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,
xevent->xcrossing.window, real_sw->xwindow);
}
#endif
if (dnd_drag_perhaps && !gdk_dnd.drag_really &&
(xevent->xcrossing.window == real_sw->xwindow))
{
@ -2295,10 +2278,10 @@ gdk_event_translate (GdkEvent *event,
case NotifyNonlinear:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("focus %s:\t\twindow: %ld\n",
(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.window = window;
@ -2314,8 +2297,8 @@ gdk_event_translate (GdkEvent *event,
case KeymapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
g_print ("keymap notify\n");
GDK_NOTE (EVENTS,
g_print ("keymap notify\n"));
/* Not currently handled */
break;
@ -2323,11 +2306,11 @@ gdk_event_translate (GdkEvent *event,
case Expose:
/* 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",
xevent->xexpose.window - base_id, xevent->xexpose.count,
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.window = window;
@ -2343,9 +2326,9 @@ gdk_event_translate (GdkEvent *event,
case GraphicsExpose:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("graphics expose:\tdrawable: %ld\n",
xevent->xgraphicsexpose.drawable - base_id);
xevent->xgraphicsexpose.drawable - base_id));
event->expose.type = GDK_EXPOSE;
event->expose.window = window;
@ -2361,9 +2344,9 @@ gdk_event_translate (GdkEvent *event,
case NoExpose:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2374,7 +2357,7 @@ gdk_event_translate (GdkEvent *event,
case VisibilityNotify:
/* Print debugging info.
*/
if (gdk_show_events)
if (gdk_debug_flags & GDK_DEBUG_EVENTS)
switch (xevent->xvisibility.state)
{
case VisibilityFullyObscured:
@ -2419,9 +2402,9 @@ gdk_event_translate (GdkEvent *event,
case DestroyNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("destroy notify:\twindow: %ld\n",
xevent->xdestroywindow.window - base_id);
xevent->xdestroywindow.window - base_id));
event->any.type = GDK_DESTROY;
event->any.window = window;
@ -2434,9 +2417,9 @@ gdk_event_translate (GdkEvent *event,
case UnmapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2450,9 +2433,9 @@ gdk_event_translate (GdkEvent *event,
case MapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2463,9 +2446,9 @@ gdk_event_translate (GdkEvent *event,
case ReparentNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("reparent notify:\twindow: %ld\n",
xevent->xreparent.window - base_id);
xevent->xreparent.window - base_id));
/* Not currently handled */
break;
@ -2478,7 +2461,7 @@ gdk_event_translate (GdkEvent *event,
ConfigureNotify, xevent))
/*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",
xevent->xconfigure.window - base_id,
xevent->xconfigure.x,
@ -2487,7 +2470,7 @@ gdk_event_translate (GdkEvent *event,
xevent->xconfigure.height,
xevent->xconfigure.border_width,
xevent->xconfigure.above - base_id,
xevent->xconfigure.override_redirect);
xevent->xconfigure.override_redirect));
if (window_private)
{
@ -2540,9 +2523,9 @@ gdk_event_translate (GdkEvent *event,
case PropertyNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2554,9 +2537,9 @@ gdk_event_translate (GdkEvent *event,
break;
case SelectionClear:
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2567,9 +2550,9 @@ gdk_event_translate (GdkEvent *event,
break;
case SelectionRequest:
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2583,9 +2566,9 @@ gdk_event_translate (GdkEvent *event,
break;
case SelectionNotify:
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("selection notify:\twindow: %ld\n",
xevent->xproperty.window - base_id);
xevent->xproperty.window - base_id));
event->selection.type = GDK_SELECTION_NOTIFY;
@ -2601,9 +2584,9 @@ gdk_event_translate (GdkEvent *event,
case ColormapNotify:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
g_print ("colormap notify:\twindow: %ld\n",
xevent->xcolormap.window - base_id);
xevent->xcolormap.window - base_id));
/* Not currently handled */
break;
@ -2611,9 +2594,9 @@ gdk_event_translate (GdkEvent *event,
case ClientMessage:
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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
* communicating with a program. We'll first check to
@ -2635,9 +2618,9 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
if (gdk_show_events)
GDK_NOTE (EVENTS,
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.window = window;
@ -2653,11 +2636,9 @@ gdk_event_translate (GdkEvent *event,
Atom reptype = 0;
event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifndef DEBUG_DND
if (gdk_show_events)
#endif
g_print ("GDK_DROP_ENTER [%d][%d]\n",
window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply);
GDK_NOTE (DND, g_print ("GDK_DROP_ENTER [%d][%d]\n",
window_private->dnd_drop_enabled, event->dropenter.u.flags.sendreply));
return_val = FALSE;
/* Now figure out if we really want this drop...
@ -2694,18 +2675,18 @@ gdk_event_translate (GdkEvent *event,
event->any.window = window;
event->dropenter.requestor = replyev.xclient.window;
event->dropenter.u.allflags = xevent->xclient.data.l[1];
#ifdef DEBUG_DND
g_print("We sent a GDK_DROP_ENTER on to Gtk\n");
#endif
GDK_NOTE (DND, g_print("We sent a GDK_DROP_ENTER on to Gtk\n"));
return_val = TRUE;
}
}
else if (xevent->xclient.message_type == gdk_dnd.gdk_XdeLeave)
{
#ifndef DEBUG_DND
if (gdk_show_events)
#endif
#ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
g_print ("GDK_DROP_LEAVE\n");
#endif
if (window_private && window_private->dnd_drop_enabled)
{
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
* over
*/
#ifndef DEBUG_DND
if (gdk_show_events)
#endif
#ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
g_print ("GDK_DRAG_REQUEST\n");
#endif
event->dragrequest.u.allflags = xevent->xclient.data.l[1];
return_val = FALSE;
@ -2778,10 +2759,10 @@ gdk_event_translate (GdkEvent *event,
gulong tmp_long;
guchar *tmp_charptr;
#ifndef DEBUG_DND
if(gdk_show_events)
#endif
g_print("GDK_DROP_DATA_AVAIL\n");
#ifdef G_ENABLE_DEBUG
if (gdk_debug_flags & (GDK_DEBUG_EVENTS | GDK_DEBUG_DND))
g_print("GDK_DROP_DATA_AVAIL\n");
#endif
event->dropdataavailable.u.allflags = xevent->xclient.data.l[1];
if(window
/* No preview of data ATM */
@ -2809,10 +2790,8 @@ gdk_event_translate (GdkEvent *event,
}
else
{
#ifdef DEBUG_DND
g_print("XGetWindowProperty got us %d bytes\n",
event->dropdataavailable.data_numbytes);
#endif
GDK_NOTE (DND, g_print("XGetWindowProperty got us %ld bytes\n",
event->dropdataavailable.data_numbytes));
event->dropdataavailable.data =
g_malloc (event->dropdataavailable.data_numbytes);
memcpy (event->dropdataavailable.data,
@ -2844,8 +2823,8 @@ gdk_event_translate (GdkEvent *event,
case MappingNotify:
/* Print debugging info.
*/
if (gdk_show_events)
g_print ("mapping notify\n");
GDK_NOTE (EVENTS,
g_print ("mapping notify\n"));
/* Let XLib know that there is a new keyboard mapping.
*/
@ -3569,9 +3548,9 @@ gdk_ic_cleanup (void)
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);
xim_ic_list = NULL;

View File

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

View File

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

View File

@ -182,6 +182,13 @@
* 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__
#define g_assert(expr) G_STMT_START{\
@ -198,6 +205,33 @@
__LINE__, \
__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{ \
if (!(expr)) \
{ \
@ -220,19 +254,7 @@
return val; \
}; }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
#else /* !__GNUC__ */
#define g_return_if_fail(expr) G_STMT_START{ \
if (!(expr)) \
@ -254,8 +276,9 @@
return val; \
}; }G_STMT_END
#endif /* __GNUC__ */
#endif /* !__GNUC__ */
#endif /* G_DISABLE_CHECKS */
#ifdef __cplusplus
extern "C" {
@ -327,6 +350,7 @@ typedef struct _GListAllocator GListAllocator;
typedef struct _GStringChunk GStringChunk;
typedef struct _GString GString;
typedef struct _GArray GArray;
typedef struct _GDebugKey GDebugKey;
typedef void (*GFunc) (gpointer data, gpointer user_data);
typedef void (*GHFunc) (gpointer key, gpointer value, gpointer user_data);
@ -370,6 +394,12 @@ struct _GArray
guint len;
};
struct _GDebugKey
{
gchar *key;
guint value;
};
struct _GHashTable { gint dummy; };
struct _GCache { 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_print_handler (GPrintFunc func);
guint g_parse_debug_string (const gchar *string,
GDebugKey *keys,
guint nkeys);
void g_debug (char *progname);
void g_attach_process (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);
#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 \
gtkcurve.h \
gtkdata.h \
gtkdebug.h \
gtkdialog.h \
gtkdrawingarea.h \
gtkentry.h \

View File

@ -141,11 +141,22 @@ static GdkColormap *gtk_colormap; /* The colormap to be used in creating new
* 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
gtk_init (int *argc,
char ***argv)
{
#ifdef G_ENABLE_DEBUG
gboolean debug_set = FALSE;
#endif
if (0)
{
g_set_error_handler (gtk_error);
@ -154,11 +165,46 @@ gtk_init (int *argc,
g_set_print_handler (gtk_print);
}
/* Initialize "gdk". We simply pass along the 'argc' and 'argv'
* parameters as they contain information that
/* Initialize "gdk". We pass along the 'argc' and 'argv'
* parameters as they contain information that GDK uses
*/
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
* used in creating widgets. (We want to use the system
* 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 GHashTable *object_data_ht = NULL;
static GMemChunk *object_data_mem_chunk = NULL;
static GtkObjectData *object_data_free_list = NULL;
static GSList *object_data_id_list = NULL;
static gint object_data_id_index = 0;
@ -146,9 +145,10 @@ gtk_object_init_type ()
object_type = gtk_type_unique (0, &object_info);
g_assert (object_type == GTK_TYPE_OBJECT);
#ifdef GTK_TRACE_OBJECTS
ATEXIT (gtk_object_debug);
#endif /* GTK_TRACE_OBJECTS */
#ifdef G_ENABLE_DEBUG
if (gtk_debug_flags & GTK_DEBUG_OBJECTS)
ATEXIT (gtk_object_debug);
#endif /* G_ENABLE_DEBUG */
}
GtkType
@ -223,10 +223,13 @@ gtk_object_init (GtkObject *object)
object->ref_count = 1;
object->object_data = NULL;
#ifdef GTK_TRACE_OBJECTS
obj_count++;
living_objs = g_slist_prepend (living_objs, object);
#endif /* GTK_TRACE_OBJECTS */
#ifdef G_ENABLE_DEBUG
if (gtk_debug_flags & GTK_DEBUG_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)
{
g_assert (g_slist_find (living_objs, object));
living_objs = g_slist_remove (living_objs, object);
#ifdef G_ENABLE_DEBUG
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);
obj_count--;
}
}
#ifdef G_ENABLE_DEBUG
static GtkObject *gtk_trace_object = NULL;
void
@ -1514,34 +1524,40 @@ gtk_trace_referencing (gpointer *o,
gboolean exists;
GtkObject *object = (GtkObject*) o;
g_return_if_fail (object != NULL);
g_return_if_fail (GTK_IS_OBJECT (object));
if (gtk_debug_flags & GTK_DEBUG_OBJECTS)
{
g_return_if_fail (object != NULL);
g_return_if_fail (GTK_IS_OBJECT (object));
exists = (g_slist_find (living_objs, object) != NULL);
if (exists &&
(object == gtk_trace_object ||
gtk_trace_object == (void*)42))
printf ("trace: object_%s: (%s:%p)->ref_count=%d%s (%s_f%02d:%d)\n",
do_ref ? "ref" : "unref",
gtk_type_name (GTK_OBJECT_TYPE (object)),
object,
object->ref_count,
do_ref ? " + 1" : " - 1 ",
func,
local_frame,
line);
exists = (g_slist_find (living_objs, object) != NULL);
if (exists &&
(object == gtk_trace_object ||
gtk_trace_object == (void*)42))
printf ("trace: object_%s: (%s:%p)->ref_count=%d%s (%s_f%02d:%d)\n",
do_ref ? "ref" : "unref",
gtk_type_name (GTK_OBJECT_TYPE (object)),
object,
object->ref_count,
do_ref ? " + 1" : " - 1 ",
func,
local_frame,
line);
if (!exists)
printf ("trace: object_%s(%p): no such object! (%s_f%02d:%d)\n",
do_ref ? "ref" : "unref",
object,
func,
local_frame,
line);
if (!exists)
printf ("trace: object_%s(%p): no such object! (%s_f%02d:%d)\n",
do_ref ? "ref" : "unref",
object,
func,
local_frame,
line);
}
if (do_ref)
gtk_object_ref (object);
else
gtk_object_unref (object);
}
#endif /* G_ENABLE_DEBUG */

View File

@ -18,11 +18,10 @@
#ifndef __GTK_OBJECT_H__
#define __GTK_OBJECT_H__
#define GTK_TRACE_OBJECTS 1
#include <gtk/gtkenums.h>
#include <gtk/gtktypeutils.h>
#include <gtk/gtkdebug.h>
#ifdef __cplusplus
@ -35,12 +34,12 @@ extern "C" {
* before proceeding, but they are definately slower than their less
* 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_CLASS_CAST(klass,cast_type,cast) ((cast*) (klass))
#else /* NDEBUG */
#else /* !GTK_NO_CHECK_CASTS */
#define GTK_CHECK_CAST(obj,cast_type,cast) \
((cast*) gtk_object_check_cast ((GtkObject*) (obj), cast_type))
@ -48,7 +47,7 @@ extern "C" {
#define GTK_CHECK_CLASS_CAST(klass,cast_type,cast) \
((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'.
@ -304,7 +303,7 @@ void gtk_trace_referencing (gpointer *object,
guint line,
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_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__ */