#include <sigc++/bind.h>
#include <msp/fs/dir.h>
+#include <msp/graphics/display_private.h>
#include <msp/time/utils.h>
#include "xineengine.h"
#include "xinema.h"
using namespace std;
using namespace Msp;
+Xinema::EarlyInit::EarlyInit()
+{
+ XInitThreads();
+}
+
+
Xinema::Xinema(int, char **):
window(display, 1920, 1080),
network(*this),
window.show();
display.tick();
- engine = new XineEngine(window, &display_mutex);
+ engine = new XineEngine(window);
play_file(FS::get_sys_data_dir()/"xinema.png");
Application::main();
void Xinema::tick()
{
+ bool new_stream = false;
+
{
MutexLock lock(command_mutex);
if(!pending_mrl.empty())
stream = new XineStream(*engine, pending_mrl);
stream->play();
pending_mrl.clear();
+ new_stream = true;
}
}
- {
- MutexLock lock(display_mutex);
- display.tick();
- }
+ if(new_stream)
+ signal_stream_created.emit(*stream);
+
+ XLockDisplay(display.get_private().display);
+ display.tick();
+ XUnlockDisplay(display.get_private().display);
engine->tick();