On Sunday 20 July 2008, Johannes Bauer wrote:
> I'm writing an application which reads from a DMM (asynchronously, I'm
> using pthreads - is that a bad idea?)
Using threads is not bad in itself, but you must keep all GTK interaction in
one thread. Basically, apart from a few Glib functions like g_idle_add, the
library is not thread-safe, merely thread-aware.
> and displays the gathered data
> graphically in a Gtk::DrawingArea and also updates the last value to a
> Gtk::Label. Events come in around every half second. The problem is, the
> label is not getting updated instantly, as I'd wish. Only when the mouse
> is moved over it, it apperas.
>
> The code that modifies the label is simple:
>
> label->set_label("foobar result");
I've done something similar except I use set_markup. This works fine, but I'm
not using threads. The update is called from a g_io_channel callback, so it's
handled by the Glib main loop.
What you probably need to do is make your DMM thread call g_idle_add when new
data arrives, then do the GUI updates in the function you pass to that. That
way the GUI stuff all lives in one Glib context.
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list