summaryrefslogtreecommitdiffstats
path: root/libmpv/qml_direct/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'libmpv/qml_direct/main.h')
-rw-r--r--libmpv/qml_direct/main.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/libmpv/qml_direct/main.h b/libmpv/qml_direct/main.h
new file mode 100644
index 0000000..b0310ff
--- /dev/null
+++ b/libmpv/qml_direct/main.h
@@ -0,0 +1,51 @@
+#ifndef MPVRENDERER_H_
+#define MPVRENDERER_H_
+
+#include <QtQuick/QQuickItem>
+
+#include <mpv/client.h>
+#include <mpv/opengl_cb.h>
+#include <mpv/qthelper.hpp>
+
+class MpvRenderer : public QObject
+{
+ Q_OBJECT
+ mpv::qt::Handle mpv;
+ mpv_opengl_cb_context *mpv_gl;
+ QQuickWindow *window;
+ QSize size;
+
+ friend class MpvObject;
+public:
+ MpvRenderer(mpv::qt::Handle a_mpv, mpv_opengl_cb_context *a_mpv_gl);
+ virtual ~MpvRenderer();
+public slots:
+ void paint();
+};
+
+class MpvObject : public QQuickItem
+{
+ Q_OBJECT
+
+ mpv::qt::Handle mpv;
+ mpv_opengl_cb_context *mpv_gl;
+ MpvRenderer *renderer;
+
+public:
+ MpvObject(QQuickItem * parent = 0);
+ virtual ~MpvObject();
+public slots:
+ void command(const QVariant& params);
+ void sync();
+ void swapped();
+ void cleanup();
+signals:
+ void onUpdate();
+private slots:
+ void doUpdate();
+ void handleWindowChanged(QQuickWindow *win);
+private:
+ static void on_update(void *ctx);
+};
+
+#endif