Again, just clutching at straws - but does this give us any clue...?
Here's a partial sequence of function calls if I build my app using
gtkmm. Here's the sequence I see after clicking to close my main window:-
gtk_widget_destroy()
g_object_run_dispose()
g_object_run_dispose()
gtk_widget_dispose()
gtk_widget_unrealize() // <--- crashes during unrealize
As near as I can make it, here's the same test app written to use plain GTK+
#include <gtk/gtk.h>
static void destroy (GtkWidget *window, gpointer data)
{
gtk_main_quit ();
}
int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello World!");
gtk_widget_set_size_request (window, 200, 100);
/* Connect the main window to the destroy signal */
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK
(destroy), NULL);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
and here's the (subtlely different) sequence of function calls at closure:-
gtk_widget_destroy()
g_object_run_dispose()
gtk_widget_dispose()
gtk_widget_unrealize() // <--- doesn't crash this time
gtk_widget_dispose()
Not sure if that helps at all. I'd assume that the sequence should
essentially be the same??
John
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list