On Sat, Apr 19, 2008 at 1:17 AM, Zachrahan <[EMAIL PROTECTED]> wrote: > > Hello, > > I've gotten pretty well along with my project that involves running a > pyglet window in a background thread. Now all that I need to implement > is communicating with background windows. My strategy here is to > figure out a way to send events to the windows, and have them respond > as part of the event loop. That way, the event is handled in the > background thread (good!). Just calling the relevant event handler > from the foreground thread leads to the code being called in that > thread's context, leading to seg-faults and the like. > > So -- how can I, given a Window object, send that object an event? I > noticed that windows seem to have an "_event_queue" attribute, which > would be perfect. But just putting an event into the queue doesn't > really do anything. Calling dispatch_event() on the window would seem > to be the right thing to put the event into the queue, but it doesn't, > since it seems that the window's _enable_event_queue attribute gets > unconditionally set to False during the _setup() call in > pyglet.app.BaseEventLoop. In this case, calling dispatch_event() then > causes the event code to be run directly in the foreground thread.
_enable_event_queue is an internal flag indicating the pyglet.app event loop is _not_ being used (which requires the Window to be more careful about when events can be dispatched). > > Anyhow, I of course have basically no idea how all of this fits > together internally. Is there a simple and safe way to "send" an event > to a Window object? If not, I'll just use a separate queue for sending > events to the background thread, and install a function to > periodically check the queue and dispatch events there. > When I say pyglet is not thread-safe, I really mean it! You'll need to provide this functionality yourself. Don't forget to use a thread-safe queue. Alex. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "pyglet-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/pyglet-users?hl=en -~----------~----~----~----~------~----~------~--~---
