summaryrefslogtreecommitdiffstats
path: root/libmpv/qml_direct/main.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-03-10 21:45:48 +0100
committerwm4 <wm4@nowhere>2016-03-10 21:45:48 +0100
commit4d7638ab0f2f841de4992ca519d6556e5b650a44 (patch)
tree89c4e112b4cef52c8279b1bf3b8b93e39bc7d31a /libmpv/qml_direct/main.h
downloadmpv-examples-4d7638ab0f2f841de4992ca519d6556e5b650a44.tar.bz2
mpv-examples-4d7638ab0f2f841de4992ca519d6556e5b650a44.tar.xz
Reimport client API examples from mpv main repository
From commit d8b27ee4de4e26d594855960a4421b99db9e76ea.
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