On Mon, 2012-08-06 at 17:08 +0200, Pavel Holejsovsky wrote: > Basically, we define well-known ID for storing MainContext into any > gobject's data slot (g_object_set_data). It is up to implementation > (i.e. GTK/GDK/Clutter) to store an appropriate GMainContext instance to > this slot, marking the object as belonging to this context.
This raises the question "what main context"? I'd suggest that GTK should store the result of g_main_context_get_thread_default() when gtk_init() is called. Also, how does the object slot get set? Add it to _constructed for each object in GTK+? And then we need to patch the bindings to check for it? I'm thinking a cleaner solution is to just patch gtk+ like this: 1) Capture the context at gtk_init() time 2) Patch each finalize method that calls thread-unsafe functions (e.g. libX11) to use g_main_context_invoke (gtk_get_main_context (), gdk_x11_cursor_real_finalize, object) The thing to note here is that we don't need to bounce every g_object_unref(), we just need to ensure the finalizers are run in the default main context. _______________________________________________ gtk-devel-list mailing list gtk-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-devel-list