Hi everyone, I'm trying to revive a very old project: XQF, a graphical game server browser.
Many things are deprecated in this old code, but there is one that particularly bothers me: I try to port gdk_input_* calls to g_io. I do something like that: https://github.com/XQF/xqf/commit/cf2b506547755c6f7176979cf8b7db189c14c7e4 I rewrite some callbacks with new functions, new types, gdk_input_remove is replaced by g_source_remove, gdk_input_add is replaced by g_io_add_watch and I use GioChannel, etc. So everything seems to work… until g_main_dispatch calls my callback. You can read all my investigations here: https://github.com/XQF/xqf/issues/4 I see g_io_add_watch add a callback on a channel with a user_data reference, and yes, It works when I trace the code with gdb. The callback is added with the pointer to user_data, and when I trace the execution, pointers are the good ones. But when g_io_add_watch returns to the main loop, g_main_dispatch frees some objects and then call the callback… and segfaults because the callback was launched with a null pointer user_data! You can read a complete walktrough here : https://github.com/XQF/xqf/issues/4#issuecomment-58442986 I'm looking for a way to prevent g_main_dispatch to forget the user_data and conditions before the call of my input_callback. Is anyone have any idea what's going on? Thank you in advance! -- Thomas DEBESSE
_______________________________________________ gtk-list mailing list gtk-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-list