diff options
-rw-r--r-- | src/compositor/compositor_api/qwaylandquickcompositor.cpp | 35 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandquickcompositor.h | 10 |
2 files changed, 41 insertions, 4 deletions
diff --git a/src/compositor/compositor_api/qwaylandquickcompositor.cpp b/src/compositor/compositor_api/qwaylandquickcompositor.cpp index 3a8cc4c6b..13c32fae7 100644 --- a/src/compositor/compositor_api/qwaylandquickcompositor.cpp +++ b/src/compositor/compositor_api/qwaylandquickcompositor.cpp @@ -48,11 +48,38 @@ QT_BEGIN_NAMESPACE QWaylandQuickCompositor::QWaylandQuickCompositor(QObject *parent) : QWaylandCompositor(parent) + , m_initializeLegazyQmlNames(true) { - qmlRegisterUncreatableType<QWaylandSurfaceItem>("QtCompositor", 1, 0, "WaylandSurfaceItem", QObject::tr("Cannot create instance of WaylandSurfaceItem")); - qmlRegisterUncreatableType<QWaylandQuickSurface>("QtCompositor", 1, 0, "WaylandQuickSurface", QObject::tr("Cannot create instance of WaylandQuickSurface")); - qmlRegisterUncreatableType<QWaylandClient>("QtCompositor", 1, 0, "WaylandClient", QObject::tr("Cannot create instance of WaylandClient")); - qmlRegisterUncreatableType<QWaylandOutput>("QtCompositor", 1, 0, "WaylandOutput", QObject::tr("Cannot create instance of WaylandOutput")); +} + +void QWaylandQuickCompositor::create() +{ + if (m_initializeLegazyQmlNames) + registerLegacyQmlNames(); + + QWaylandCompositor::create(); +} + +void QWaylandQuickCompositor::registerLegacyQmlNames() +{ + static bool initialized = false; + if (!initialized) { + qmlRegisterUncreatableType<QWaylandSurfaceItem>("QtCompositor", 1, 0, "WaylandSurfaceItem", QObject::tr("Cannot create instance of WaylandSurfaceItem")); + qmlRegisterUncreatableType<QWaylandQuickSurface>("QtCompositor", 1, 0, "WaylandQuickSurface", QObject::tr("Cannot create instance of WaylandQuickSurface")); + qmlRegisterUncreatableType<QWaylandClient>("QtCompositor", 1, 0, "WaylandClient", QObject::tr("Cannot create instance of WaylandClient")); + qmlRegisterUncreatableType<QWaylandOutput>("QtCompositor", 1, 0, "WaylandOutput", QObject::tr("Cannot create instance of WaylandOutput")); + initialized = true; + } +} + +bool QWaylandQuickCompositor::initializeLegazyQmlNames() const +{ + return m_initializeLegazyQmlNames; +} + +void QWaylandQuickCompositor::setInitializeLegazyQmlNames(bool init) +{ + m_initializeLegazyQmlNames = init; } QWaylandSurfaceView *QWaylandQuickCompositor::createView(QWaylandSurface *surf) diff --git a/src/compositor/compositor_api/qwaylandquickcompositor.h b/src/compositor/compositor_api/qwaylandquickcompositor.h index 6bfe8b0c9..b859bd8c8 100644 --- a/src/compositor/compositor_api/qwaylandquickcompositor.h +++ b/src/compositor/compositor_api/qwaylandquickcompositor.h @@ -43,14 +43,24 @@ QT_BEGIN_NAMESPACE class Q_COMPOSITOR_EXPORT QWaylandQuickCompositor : public QWaylandCompositor { + Q_OBJECT + Q_PROPERTY(bool initializeLegazyQmlNames READ initializeLegazyQmlNames WRITE setInitializeLegazyQmlNames) public: QWaylandQuickCompositor(QObject *parent = 0); + void create() Q_DECL_OVERRIDE; + + static void registerLegacyQmlNames(); + bool initializeLegazyQmlNames() const; + void setInitializeLegazyQmlNames(bool init); QWaylandSurfaceView *createView(QWaylandSurface *surf) Q_DECL_OVERRIDE; QWaylandOutput *createOutput(QWindow *window, const QString &manufacturer, const QString &model) Q_DECL_OVERRIDE; QWaylandSurface *createSurface(QWaylandClient *client, quint32 id, int version) Q_DECL_OVERRIDE; + +private: + bool m_initializeLegazyQmlNames; }; QT_END_NAMESPACE |