Thanks Chris, that was the problem. After giving me that direction, I looked around, read a little and figured it out.
For anyone else having this problem, I found the following resource very useful: http://tadeboro.blogspot.com/2009/06/multi-threaded-gtk-applications.html The solution was simply to do: gdk_threads_enter(); parent->queue_draw(); gdk_threads_leave(); In hindsight, I would have designed things a little bit differently to allow the code to be easily ported to Windows. Thanks again Chris, you're a real life saver. Simon On Sun, May 1, 2011 at 5:04 AM, Chris Vine <[email protected]>wrote: > On Sat, 30 Apr 2011 18:37:34 +1000 > Simon Jenkins <[email protected]> wrote: > > Hi There, > > > > I'm almost done creating an application using Gtkmm, which has a > > drawing area (an OpenGL scene), which serves as a soon to be open > > sourced graph visualisation application. A big thank you to all the > > creators for this tool, but I'd like to ask for some help :) > > > > The program is event driven, but has a thread running that processes > > the layout. Every time one iteration of the layout algorithm in the > > layout thread has occured, I call 'queue_draw()' on the drawing area. > > The drawing area has the following definition: > [snip] > > > I would greatly appreciate any suggestions. > > If you are calling queue_draw() in the layout thread, you should > note that GTK+ is not thread safe unless you are also using a unix-like > environment and lock and unlock the gdk global lock (the global lock > cannot be used with windows). libsigc++ employs no locking and so is > also not thread safe unless you employ external synchronisation (and > because of the design, sigc::trackable is extremely difficult to use > safely). > > Chris >
_______________________________________________ gtkmm-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtkmm-list
