X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fxinestream.h;h=832e3a72b0bfd34470d0af2b4c06dd6438644762;hb=2e629085885b652a10d775695e63bc4892aa2eca;hp=885797d0d6132cc8094c76405c4fdfbea4e221c9;hpb=4157ae2c48c539a3bbe609ab143d4c1454fd1748;p=xinema.git diff --git a/source/xinestream.h b/source/xinestream.h index 885797d..832e3a7 100644 --- a/source/xinestream.h +++ b/source/xinestream.h @@ -3,25 +3,61 @@ #include #include +#include +#include +#include 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; + 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; public: XineStream(XineEngine &, const std::string &); ~XineStream(); + 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 handle_event(const xine_event_t &); }; +void operator<<(Msp::LexicalConverter &, XineStream::State); +void operator>>(const Msp::LexicalConverter &, XineStream::State &); + #endif