xine_panel updates
Darren V Hart <[email protected]> Wed, 17 Sep 2003 21:21:45 -0600
| Newsgroups | gmane.comp.embedded.stk.gui.devel |
|---|---|
| Message-ID | <1063855305.19276.10.camel@brain> |
Team, The xine engine registers one event_listener per stream, at the moment that is one event_listener per xine_panel. xine_panel now has an event_listener() routine as well as a static event_listener_wrapper() wrapper. The wrapper is passed as the function pointer to the xine engine (you can't pass addresses of member methods) along with a this pointer cast to void*. The when xine events occur the xine engine calls the wrapper with a xine_event and the this pointer as user_data. The wrapper casts the user_data back to a xine_panel* and calls the member event_listener. We can now flesh that method out to handle all xine events. Pretty cool. I have also added some basic input events to the xine_panel. When the panel is focused (click on it with the mouse or tab to it), the arrow keys and the enter key are bound to XINE_EVENT_INPUT_[UP|DOWN|LEFT|RIGHT|SELECT] events. This means that you can navigate a DVD menu now from the xine_test application! Try it out: xine_test sdl dvd:// Very, very, very kewl! We need to determine how we will generate xine input events and how much state we are required to store and how much is stored by the engine. Do we want to wrap every xine input event with a method? Do we want one method that just calls the xine method to send an event (forcing the user to know the xine event defines)? Do we only want high level routines liek playpause(), faster(), slower(), rewind(), etc.? What signals do we want and how will we handle full screen? What about audio only streams, are they still played with the xine_panel or do we need xine_video and xine_audio instead? Just some questions that I would like some input on. Darren