X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fxinestream.h;h=65f25ab26ee13112a8e07a592075b75919308102;hb=493b09323c6b07ea66ba3f4725c1f1831fd98222;hp=c1f27f74aa45542318d40a05e8adb28153b874ea;hpb=3bd92c1fa7a85b47356cd6f2bad23893955a0785;p=xinema.git diff --git a/source/xinestream.h b/source/xinestream.h index c1f27f7..65f25ab 100644 --- a/source/xinestream.h +++ b/source/xinestream.h @@ -3,6 +3,8 @@ #include #include +#include +#include #include class XineEngine; @@ -10,6 +12,14 @@ class XineEngine; class XineStream { public: + enum State + { + STOPPED, + PAUSED, + PLAYING + }; + + sigc::signal signal_state_changed; sigc::signal signal_title_changed; sigc::signal signal_duration_changed; sigc::signal signal_position_changed; @@ -18,6 +28,8 @@ private: XineEngine &engine; xine_stream_t *stream; xine_event_queue_t *queue; + Msp::Mutex mutex; + State state; std::string title; Msp::Time::TimeDelta duration; Msp::Time::TimeDelta position; @@ -26,17 +38,27 @@ public: XineStream(XineEngine &, const std::string &); ~XineStream(); + Msp::Mutex &get_mutex() { return mutex; } + State get_state() const { return state; } const Msp::Time::TimeDelta &get_duration() const { return duration; } const Msp::Time::TimeDelta &get_position() const { return position; } const std::string &get_title() const { return title; } void play(); + void seek(const Msp::Time::TimeDelta &); + void pause(); void stop(); +private: + void set_state(State); +public: void tick(); private: - void check_info(); + void update_info(); void handle_event(const xine_event_t &); }; +void operator<<(Msp::LexicalConverter &, XineStream::State); +void operator>>(const Msp::LexicalConverter &, XineStream::State &); + #endif