#define XINEMA_H_
#include <msp/core/application.h>
+#include <msp/core/mutex.h>
+#include <msp/fs/path.h>
#include <msp/graphics/display.h>
#include <msp/graphics/window.h>
-#include <xine.h>
+#include "networkinterface.h"
+
+class XineEngine;
+class XineStream;
class Xinema: public Msp::RegisteredApplication<Xinema>
{
-private:
- struct EarlyInit
- {
- EarlyInit();
- };
+public:
+ sigc::signal<void, XineStream &> signal_stream_created;
- EarlyInit early_init;
- std::string filename;
+private:
Msp::Graphics::Display display;
+ Msp::Mutex display_mutex;
Msp::Graphics::Window window;
- xine_t *xine;
- xine_audio_port_t *xine_audio;
- x11_visual_t xine_visual;
- xine_video_port_t *xine_video;
- xine_stream_t *xine_stream;
- xine_event_queue_t *xine_queue;
+ NetworkInterface network;
+ XineEngine *engine;
+ XineStream *stream;
+
+ Msp::Mutex command_mutex;
+ std::string pending_mrl;
public:
Xinema(int, char **);
virtual int main();
-
private:
virtual void tick();
- 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 *);
+public:
+ void play_file(const Msp::FS::Path &);
+ XineStream *get_stream() const { return stream; }
};
#endif