[vlc-devel] [PATCH v2 07/12] qt: provide a dummy compositor

Pierre Lamot pierre at videolabs.io
Thu May 14 14:05:26 CEST 2020


---
 modules/gui/qt/Makefile.am                    |  3 +
 modules/gui/qt/maininterface/compositor.cpp   |  3 +-
 .../gui/qt/maininterface/compositor_dummy.cpp | 61 +++++++++++++++++++
 .../gui/qt/maininterface/compositor_dummy.hpp | 53 ++++++++++++++++
 4 files changed, 119 insertions(+), 1 deletion(-)
 create mode 100644 modules/gui/qt/maininterface/compositor_dummy.cpp
 create mode 100644 modules/gui/qt/maininterface/compositor_dummy.hpp

diff --git a/modules/gui/qt/Makefile.am b/modules/gui/qt/Makefile.am
index 5ea867f418..e2886bec50 100644
--- a/modules/gui/qt/Makefile.am
+++ b/modules/gui/qt/Makefile.am
@@ -116,6 +116,8 @@ libqt_plugin_la_SOURCES = \
 	gui/qt/dialogs/vlm/vlm.cpp gui/qt/dialogs/vlm/vlm.hpp \
 	gui/qt/maininterface/compositor.hpp \
 	gui/qt/maininterface/compositor.cpp \
+	gui/qt/maininterface/compositor_dummy.hpp \
+	gui/qt/maininterface/compositor_dummy.cpp \
 	gui/qt/maininterface/main_interface.cpp \
 	gui/qt/maininterface/main_interface.hpp \
 	gui/qt/maininterface/videosurface.cpp \
@@ -268,6 +270,7 @@ nodist_libqt_plugin_la_SOURCES = \
 	gui/qt/dialogs/sout/sout.moc.cpp \
 	gui/qt/dialogs/sout/sout_widgets.moc.cpp \
 	gui/qt/dialogs/toolbar/toolbareditor.moc.cpp \
+	gui/qt/maininterface/compositor_dummy.moc.cpp \
 	gui/qt/maininterface/main_interface.moc.cpp \
 	gui/qt/maininterface/videosurface.moc.cpp \
 	gui/qt/medialibrary/medialib.moc.cpp \
diff --git a/modules/gui/qt/maininterface/compositor.cpp b/modules/gui/qt/maininterface/compositor.cpp
index 96edd2d9b7..67dccc59b6 100644
--- a/modules/gui/qt/maininterface/compositor.cpp
+++ b/modules/gui/qt/maininterface/compositor.cpp
@@ -17,12 +17,13 @@
  *****************************************************************************/
 
 #include "compositor.hpp"
+#include "compositor_dummy.hpp"
 
 namespace vlc {
 
 Compositor* Compositor::createCompositor(intf_thread_t *p_intf)
 {
-    return nullptr;
+    return new CompositorDummy(p_intf);
 }
 
 }
diff --git a/modules/gui/qt/maininterface/compositor_dummy.cpp b/modules/gui/qt/maininterface/compositor_dummy.cpp
new file mode 100644
index 0000000000..990c3d74d8
--- /dev/null
+++ b/modules/gui/qt/maininterface/compositor_dummy.cpp
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (C) 2020 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#include "compositor_dummy.hpp"
+
+#include "maininterface/main_interface.hpp"
+#include "maininterface/mainui.hpp"
+
+namespace vlc {
+
+CompositorDummy::CompositorDummy(intf_thread_t *p_intf, QObject* parent)
+    : QObject(parent)
+    , m_intf(p_intf)
+{
+}
+
+MainInterface* CompositorDummy::makeMainInterface()
+{
+    m_rootWindow = new MainInterface(m_intf);
+    m_rootWindow->show();
+    QQuickWidget* centralWidget = new QQuickWidget(m_rootWindow);
+    centralWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
+
+    MainUI* m_ui = new MainUI(m_intf, m_rootWindow, this);
+    m_ui->setup(centralWidget->engine());
+    centralWidget->setContent(QUrl(), m_ui->getComponent(), m_ui->getRootObject());
+
+    m_rootWindow->setCentralWidget(centralWidget);
+    return m_rootWindow;
+}
+
+void CompositorDummy::destroyMainInterface()
+{
+    if (m_rootWindow)
+    {
+        delete m_rootWindow;
+        m_rootWindow = nullptr;
+    }
+}
+
+bool CompositorDummy::setupVoutWindow(vout_window_t*)
+{
+    //dummy compositor doesn't handle window intergration
+    return false;
+}
+
+}
diff --git a/modules/gui/qt/maininterface/compositor_dummy.hpp b/modules/gui/qt/maininterface/compositor_dummy.hpp
new file mode 100644
index 0000000000..bcaa9672a0
--- /dev/null
+++ b/modules/gui/qt/maininterface/compositor_dummy.hpp
@@ -0,0 +1,53 @@
+/*****************************************************************************
+ * Copyright (C) 2020 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifndef VLC_COMPOSITOR_DUMMY
+#define VLC_COMPOSITOR_DUMMY
+
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "compositor.hpp"
+
+class MainInterface;
+
+namespace vlc {
+
+class CompositorDummy : public QObject, public Compositor
+{
+    Q_OBJECT
+public:
+    CompositorDummy(intf_thread_t *p_intf, QObject* parent = nullptr);
+    ~CompositorDummy() = default;
+
+    MainInterface *makeMainInterface() override;
+    virtual void destroyMainInterface() override;
+
+    bool setupVoutWindow(vout_window_t *p_wnd) override;
+
+private:
+
+    intf_thread_t *m_intf;
+
+    MainInterface* m_rootWindow;
+};
+
+}
+
+#endif // VLC_COMPOSITOR_DUMMY
-- 
2.25.1



More information about the vlc-devel mailing list