On Fri, 2013-04-26 at 20:22 -0700, Simon Feltman wrote:

> To clarify, Python threading is probably the wrong tool for CPU bou d
> operations unless those operations free up the GIL.

This might be, but ideally this is really something the designers of the
various interpreters should be more concerned with than the user of the
language. But I understand what you are saying.


> Unless the GDK/GTK calls within the callback scheduled by
> GObject.idle_add are explicitly surrounded with
> Gdk.threads_enter/leave() along with a call Gdk.threads_init() at
> program start, then chances are the problems you ran into are related
> to GDK/GTK calls not being thread safe and the callback not holding
> the GDK global lock. As Nicola mentioned, Gdk.threads_add_idle does
> this for you. Also note that Gdk.threads_enter/leave are essentially
> no-ops unless Gdk.threads_init is called.

It makes sense since Gdk.threads_add_idle() is higher level than a
GObject interface.

> My confusion regarding these APIs stems from some of them being marked
> as deprecated since version 3.6 (Gdk.threads_init and
> Gdk.threads_enter/leave). In this case it is unclear whether or not
> Gdk.threads_init is still necessary when using Gdk.threads_add_idle
> with GTK+ >= 3.6.

I think the safe thing to do if one isn't absolutely certain of the
specific runtime version the user will be relying on and the
documentation is still ambiguous or inconsistent, depending on where you
are looking, is to just call both GObject.threads_init() and
Gdk.threads_init() for good measure.

Thanks for your help, Simon.

-- 
Kip Warner -- Software Engineer
OpenPGP encrypted/signed mail preferred
http://www.thevertigo.com
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to