Good day,
I have 2 threads:
DATA - to read data from DB
GUI - to display data
Glib::Dispatcher is used to send updates from DATA thread to GUI.
At some time I would to switch environment, so, I am destroying all
forms (GUI-objects) already displayed, and giving user "login" dialog.
When GUI-objects are destroyed, Glib::Dispatcher notifiers are destroyed
as well, but it happens before MAIN-LOOP actually reads all events those
were stored by notifiers. So, application crashes, when trying to access
data from Glib::DispatchNotifier structure.
1) My class that contain Glib::Dispatcher object is derived from
sigc::trackable, so, I hoped it should handle signal disconnection
properly on destruction.
2) (GTK+) Is there way to clear events manually to prevent application
from crashing?
That backtrace I've got from debuggin:
#0 0x0000003b70e535e9 in std::_List_node_base::swap () from
/usr/lib64/libstdc++.so.6
#1 0x0000002a96c66136 in Glib::DispatchNotifier::pipe_io_handler
(this=0x5baec0)
at
/usr/lib/gcc/x86_64-redhat-linux/3.4.5/../../../../include/c++/3.4.5/bits/stl_list.h:913
#2 0x0000002a96c66b00 in
sigc::internal::slot_call1<sigc::bound_mem_functor1<bool,
Glib::DispatchNotifier, Glib::IOCondition>, bool, Glib::IOCondition>::call_it
(rep=Variable "rep" is not available.
) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1839
#3 0x0000002a96c69b01 in Glib::IOSource::dispatch (this=Variable "this" is not
available.
) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:515
#4 0x0000002a96c68edf in Glib::Source::dispatch_vfunc (callback=Variable
"callback" is not available.
) at main.cc:102
#5 0x0000002a974850f6 in IA__g_main_context_dispatch (context=0x57d6b0) at
gmain.c:1934
#6 0x0000002a97486b18 in g_main_context_iterate (context=0x57d6b0,
block=1847316864, dispatch=1, self=Variable "self" is not available.
) at gmain.c:2565
#7 0x0000002a97486e7a in IA__g_main_loop_run (loop=0x8c1580) at gmain.c:2769
#8 0x0000002a96842201 in gtk_main () at gtkmain.c:1173
#9 0x000000000040537d in main (argc=1, argv=0x7fbffff398) at Client.cpp:361
package versions:
GTK+-2.4.13
GTKMM-2.4.11
GLIB-2.4.7
GLIBMM-2.4.8
Regards,
-andrew
_______________________________________________
gtk-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list