X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Frenderer.h;h=6910f42706e0dd036e9e4d4a8bf25a9e02608a53;hb=refs%2Fheads%2Fmaster;hp=8b7d1b5ac52a907a282f342af7370f5aaaf905de;hpb=c24658bd34221d735f0641c924b890e1a6be7101;p=kdenlive diff --git a/src/renderer.h b/src/renderer.h index 8b7d1b5a..6910f427 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -31,8 +31,9 @@ #include "gentime.h" #include "definitions.h" -#include "abstractmonitor.h" +#include "widgets/abstractmonitor.h" +#include #include #include @@ -47,6 +48,7 @@ #include #include +class QGLWidget; class QPixmap; class KComboBox; @@ -109,7 +111,7 @@ class Render: public AbstractRender * @param rendererName A unique identifier for this renderer * @param winid The parent widget identifier (required for SDL display). Set to 0 for OpenGL rendering * @param profile The MLT profile used for the renderer (default one will be used if empty). */ - Render(Kdenlive::MonitorId rendererName, int winid, QString profile = QString(), QWidget *parent = 0); + Render(Kdenlive::MonitorId rendererName, int winid, QString profile = QString(), QWidget *parent = 0, QGLWidget *mainGLContext = 0); /** @brief Destroy the MLT Renderer. */ virtual ~Render(); @@ -356,6 +358,8 @@ class Render: public AbstractRender protected: static void consumer_frame_show(mlt_consumer, Render * self, mlt_frame frame_ptr); static void consumer_gl_frame_show(mlt_consumer, Render * self, mlt_frame frame_ptr); + static void consumer_thread_started(mlt_consumer, Render * self, mlt_frame frame_ptr); + static void consumer_thread_stopped(mlt_consumer, Render * self, mlt_frame frame_ptr); private: @@ -368,6 +372,8 @@ private: Mlt::Producer * m_mltProducer; Mlt::Profile *m_mltProfile; Mlt::Event *m_showFrameEvent; + Mlt::Event *m_consumerThreadStartedEvent; + Mlt::Event *m_consumerThreadStoppedEvent; Mlt::Event *m_pauseEvent; double m_fps; @@ -399,6 +405,10 @@ private: bool m_paused; /** @brief True if this monitor is active. */ bool m_isActive; + QGLWidget *m_mainGLContext; + QGLWidget *m_GLContext; + QMap m_renderThreadGLContexts; + Mlt::Filter* m_glslManager; void closeMlt(); void mltCheckLength(Mlt::Tractor *tractor); @@ -477,6 +487,7 @@ signals: * * Used in Mac OS X. */ void showImageSignal(QImage); + void showImageSignal(Mlt::Frame*, GLuint); void showAudioSignal(const QVector &); void addClip(const KUrl &, stringMap); void checkSeeking();