[94] in The GTK GIMP ToolKit mailing list archive

home help back first fref pref prev next nref lref last post

[gtk-list] the old gdk_window_set_user_data(NULL) patch

daemon@ATHENA.MIT.EDU (Tim Janik)
Mon May 12 10:56:13 1997

Date: Mon, 12 May 1997 16:54:47 +0200 (CEST)
From: Tim Janik <Tim.Janik@Hamburg.Netsurf.DE>
To: |gtk mailing list <gtk-list@redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com



some while ago (23 Apr on gimp-developer) Kazuhiro Sasayama
posted a patch to reset the user_data of a GdkWindow to NULL
before destroying it.
this avoided spurious segmentation faults, but now there are
some spurious warnings:

> ** WARNING **: file gtkwidget.c: line 905 (gtk_widget_event): "widget != NULL"
> ** WARNING **: file gtkmain.c: line 817 (gtk_propagate_event): "widget != NULL"

instead of the segfaults.

if a GdkWindow is destroyed, but there are still events
in the queue referring to it, gtk_main_iteration() will
get that very event through gdk_event_get() and try to
extract the widget (gtk_get_event_widget()) from the
user_data of the GdkWindow wich is now NULL.
after this, gtk_widget_event() or gtk_propagate_event()
get called with the NULL as argument.

so i think gdk_event_get() should get changed to not
pass up events of a GdkWindow that has
((GdkWindowPrivate*)window)->destroyed set to TRUE.

something i don't understand is, why are there still some
calls to gdk_window_destroy() from variuous gtkwidgets that
doesn't call gdk_window_set_user_data(,NULL) first.
e.g.: gtkviewport.c, gtktext.c, gtkruler.c, gtkrange.c
      and gtknotebook.c.
 

---
ciaoTJ

Tim.Janik@Hamburg.Netsurf.DE	[signature: <CENS||ED>]

--
To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null


home help back first fref pref prev next nref lref last post