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