Re: Is gtkmm deleting stuff it shouldn't be deleting ??



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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]