X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fxineengine.h;h=50b0927659089d0c417c480daf5316066e9dfca4;hb=649ced5849086abe7711d588f95a48677936515a;hp=8acb1a5975cb8acb87930453393cbfbaba5df960;hpb=4157ae2c48c539a3bbe609ab143d4c1454fd1748;p=xinema.git diff --git a/source/xineengine.h b/source/xineengine.h index 8acb1a5..50b0927 100644 --- a/source/xineengine.h +++ b/source/xineengine.h @@ -2,37 +2,41 @@ #define XINEENGINE_H_ #include +#include #include -#include #include class XineStream; -class XineEngine +class XineEngine: public sigc::trackable { private: - const Msp::Graphics::Window &window; - Msp::Mutex *display_mutex; - pthread_t locked_thread; - unsigned lock_count; + Msp::Graphics::Window &window; xine_t *engine; xine_audio_port_t *audio_driver; x11_visual_t visual; xine_video_port_t *video_driver; + Msp::Graphics::Window::Event *pending_expose; + std::list streams; public: - XineEngine(const Msp::Graphics::Window &, Msp::Mutex * = 0); + XineEngine(Msp::Graphics::Window &); ~XineEngine(); xine_t *get_engine() { return engine; } xine_audio_port_t *get_audio_driver() { return audio_driver; } xine_video_port_t *get_video_driver() { return video_driver; } + void add_stream(XineStream &); + void remove_stream(XineStream &); + + void tick(); + private: + void window_exposed(unsigned, unsigned, unsigned, unsigned, const Msp::Graphics::Window::Event &); + static void dest_size_cb(void *, int, int, double, int *, int *, double *); static void frame_output_cb(void *, int, int, double, int *, int *, int *, int *, double *, int *, int *); - static void lock_cb(void *); - static void unlock_cb(void *); }; #endif