diff --git a/src/3rdparty/wayland/extensions/sub-surface-extension.xml b/src/3rdparty/wayland/extensions/sub-surface-extension.xml index 4ea87e20319..54f5a589dab 100644 --- a/src/3rdparty/wayland/extensions/sub-surface-extension.xml +++ b/src/3rdparty/wayland/extensions/sub-surface-extension.xml @@ -47,7 +47,7 @@ - + diff --git a/src/plugins/platforms/wayland/qwaylanddisplay_p.h b/src/plugins/platforms/wayland/qwaylanddisplay_p.h index 96d79ddbd5a..62074bb75ac 100644 --- a/src/plugins/platforms/wayland/qwaylanddisplay_p.h +++ b/src/plugins/platforms/wayland/qwaylanddisplay_p.h @@ -55,7 +55,6 @@ class QSocketNotifier; class QPlatformScreen; namespace QtWayland { - class qt_output_extension; class qt_shell; class qt_sub_surface_extension; class qt_surface_extension; diff --git a/src/tools/qtwaylandscanner/qtwaylandscanner.cpp b/src/tools/qtwaylandscanner/qtwaylandscanner.cpp index 784687d2649..1945f64c8b2 100644 --- a/src/tools/qtwaylandscanner/qtwaylandscanner.cpp +++ b/src/tools/qtwaylandscanner/qtwaylandscanner.cpp @@ -370,6 +370,7 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr printf("#include \n"); printf("#include \n"); printf("#include \n"); + printf("\n"); printf("\n"); printf("#ifndef WAYLAND_VERSION_CHECK\n"); @@ -381,7 +382,9 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr printf("\n"); printf("QT_BEGIN_NAMESPACE\n"); - + printf("\n"); + printf("class QWaylandExtensionContainer;\n"); + printf("\n"); QByteArray serverExport; if (headerPath.size()) { serverExport = QByteArray("Q_WAYLAND_SERVER_") + preProcessorProtocolName + "_EXPORT"; @@ -446,6 +449,11 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr printf("\n"); printf(" bool isGlobal() const { return m_global != 0; }\n"); printf(" bool isResource() const { return m_resource != 0; }\n"); + printf("\n"); + printf(" static const struct ::wl_interface *interface();\n"); + printf(" static QByteArray name() { return interface()->name; }\n"); + printf(" static int interfaceVersion() { return interface()->version; }\n"); + printf("\n"); printEnums(interface.enums); @@ -525,6 +533,7 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr printf("#include \"qwayland-server-%s.h\"\n", QByteArray(protocolName).replace('_', '-').constData()); else printf("#include <%s/qwayland-server-%s.h>\n", headerPath.constData(), QByteArray(protocolName).replace('_', '-').constData()); + printf("#include \n"); printf("\n"); printf("QT_BEGIN_NAMESPACE\n"); printf("\n"); @@ -607,6 +616,12 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr printf(" }\n"); printf("\n"); + printf(" const struct wl_interface *%s::interface()\n", interfaceName); + printf(" {\n"); + printf(" return &::%s_interface;\n", interfaceName); + printf(" }\n"); + printf("\n"); + printf(" %s::Resource *%s::%s_allocate()\n", interfaceName, interfaceName, interfaceNameStripped); printf(" {\n"); printf(" return new Resource;\n");