]> git.tdb.fi Git - xinema.git/blobdiff - source/xineengine.cpp
Refactor code to have the engine tick any streams
[xinema.git] / source / xineengine.cpp
index 656990e012ecbfafa7da5c0873ac9d350e35ecdb..5dadc93a5c7cfb35c23ffba992d871d23a166290 100644 (file)
@@ -1,8 +1,10 @@
+#include <algorithm>
 #include <stdexcept>
 #include <msp/fs/dir.h>
 #include <msp/graphics/display_private.h>
 #include <msp/graphics/window_private.h>
 #include "xineengine.h"
+#include "xinestream.h"
 
 using namespace std;
 using namespace Msp;
@@ -56,6 +58,18 @@ XineEngine::~XineEngine()
        xine_exit(engine);
 }
 
+void XineEngine::add_stream(XineStream &stream)
+{
+       streams.push_back(&stream);
+}
+
+void XineEngine::remove_stream(XineStream &stream)
+{
+       list<XineStream *>::iterator i = find(streams.begin(), streams.end(), &stream);
+       if(i!=streams.end())
+               streams.erase(i);
+}
+
 void XineEngine::tick()
 {
        if(pending_expose)
@@ -64,6 +78,9 @@ void XineEngine::tick()
                delete pending_expose;
                pending_expose = 0;
        }
+
+       for(list<XineStream *>::const_iterator i=streams.begin(); i!=streams.end(); ++i)
+               (*i)->tick();
 }
 
 void XineEngine::window_exposed(unsigned, unsigned, unsigned, unsigned, const Graphics::Window::Event &event)