5 #include <sigc++/trackable.h>
7 #include <msp/core/mutex.h>
8 #include <msp/graphics/window.h>
12 class XineEngine: public sigc::trackable
15 Msp::Graphics::Window &window;
16 Msp::Mutex *display_mutex;
17 pthread_t locked_thread;
20 xine_audio_port_t *audio_driver;
22 xine_video_port_t *video_driver;
23 Msp::Graphics::Window::Event *pending_expose;
24 std::list<XineStream *> streams;
27 XineEngine(Msp::Graphics::Window &, Msp::Mutex * = 0);
30 xine_t *get_engine() { return engine; }
31 xine_audio_port_t *get_audio_driver() { return audio_driver; }
32 xine_video_port_t *get_video_driver() { return video_driver; }
34 void add_stream(XineStream &);
35 void remove_stream(XineStream &);
40 void window_exposed(unsigned, unsigned, unsigned, unsigned, const Msp::Graphics::Window::Event &);
42 static void dest_size_cb(void *, int, int, double, int *, int *, double *);
43 static void frame_output_cb(void *, int, int, double, int *, int *, int *, int *, double *, int *, int *);
44 static void lock_cb(void *);
45 static void unlock_cb(void *);