That's a good tip, I am inheriting from sigc::trackable for the Emsac class. This might be part of the problem. If I don't inherit from sigc::trackable, what's the proper way of cleaning up the functor slot?

Thanks,

Jim


On Sep 24, 2009, at 4:25 PM, Chris Vine wrote:

On Thu, 24 Sep 2009 21:21:26 +0100
Chris Vine <[email protected]> wrote:
It may well not be related to your specific problem and I am not
clear what in your code is doing what in what thread, but nonetheless
you cannot call Glib::signal_idle().connect() from a worker thread as
it is not thread safe.  If you want to post idle handlers from other
than the GUI thread, then you will have to use g_idle_add_full()
directly, which is thread safe, but you may be better off with
Glib::Notifier.

Perhaps I also ought to add that if, in the light of this, you are
thinking of using g_idle_add_full() and are thinking of passing a slot
as the data argument of that function, make sure it represents either a
static method, or a non-static method of a class not deriving from
sigc::trackable, as sigc::trackable is not thread safe.

Chris



_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to