[pygtk] Pygtk does not play nicely with speech-dispatcher
John Finlay
finlay at moeraki.com
Sat Apr 26 01:44:44 WST 2008
James Simmons wrote:
> Michael,
>
> Thanks for the tip! It was a big help. I put gtk.gdk.threads_init()
> in the __init__ method of my program and I did get callbacks. It
> looks like I didn't get callbacks for every word, but Pygtk seems to
> not be the problem anymore. Thanks again,
The problem is that gtk and by extension pygtk has an event loop, and
the python speechd api has implemented its own event loop within a
thread. The speechd protocol is synchronous and sounds similar to RPCs.
This event loop conflict was in general a problem with RPC programming
with GUIs. The best solution is to integrate the two event loops using
io_add_watch but that would entail throwing away the python speechd api
and you would not have to use threads. This is the course I would take
if I was doing your project.
If you want to use the speechd python api you have to make your pygtk
program threaded and that is more than just calling threads_init. Others
on this list can point you to a list of best practices for threading in
pygtk.
John
More information about the pygtk
mailing list