]> git.tdb.fi Git - xinema.git/blob - source/xinema.h
Re-display the logo after the stream finishes
[xinema.git] / source / xinema.h
1 #ifndef XINEMA_H_
2 #define XINEMA_H_
3
4 #include <msp/core/application.h>
5 #include <msp/fs/path.h>
6 #include <msp/graphics/display.h>
7 #include <msp/graphics/window.h>
8 #include "networkinterface.h"
9
10 class XineEngine;
11 class XineStream;
12
13 class Xinema: public Msp::RegisteredApplication<Xinema>
14 {
15 private:
16         struct EarlyInit
17         {
18                 EarlyInit();
19         };
20
21 public:
22         sigc::signal<void, XineStream &> signal_stream_created;
23         sigc::signal<void> signal_stream_destroyed;
24
25 private:
26         EarlyInit early_init;
27         Msp::Graphics::Display display;
28         Msp::Graphics::Window window;
29         NetworkInterface network;
30         XineEngine *engine;
31         XineStream *stream;
32         bool logo_mode;
33
34         Msp::Mutex command_mutex;
35         std::string pending_mrl;
36         bool pending_logo;
37
38 public:
39         Xinema(int, char **);
40
41         virtual int main();
42 private:
43         virtual void tick();
44
45 public:
46         void play_file(const Msp::FS::Path &);
47         XineStream *get_stream() const { return logo_mode ? 0 : stream; }
48
49 private:
50         void show_logo();
51 };
52
53 #endif