diff options
author | Liang Qi <liang.qi@qt.io> | 2018-01-18 18:04:03 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-01-18 18:04:03 +0100 |
commit | 06230d22488796d92ea130e985d1e0ee2ed05199 (patch) | |
tree | 85829879b207a1a53db04e877ec2ae66294009db | |
parent | 8ab1765b0f9640eb410864971cb4336adc7b30ab (diff) | |
parent | 6793a0a907f3aa92f8f8bd5448505c152d0e3a3d (diff) | |
download | qtwayland-06230d22488796d92ea130e985d1e0ee2ed05199.tar.gz |
Merge remote-tracking branch 'origin/5.9' into 5.10
Change-Id: I6c201769561f53d88c89f75cce7d9a7b2643d2f6
-rw-r--r-- | dist/changes-5.9.4 | 35 | ||||
-rw-r--r-- | src/client/qwaylandwindow.cpp | 2 | ||||
-rw-r--r-- | src/client/qwaylandxdgshellv6.cpp | 2 | ||||
-rw-r--r-- | src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp | 2 | ||||
-rw-r--r-- | src/plugins/hardwareintegration/client/wayland-egl/wayland-egl.pro | 2 | ||||
-rw-r--r-- | tests/auto/client/client/tst_client.cpp | 37 |
6 files changed, 78 insertions, 2 deletions
diff --git a/dist/changes-5.9.4 b/dist/changes-5.9.4 new file mode 100644 index 00000000..70a2f54d --- /dev/null +++ b/dist/changes-5.9.4 @@ -0,0 +1,35 @@ +Qt 5.9.4 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.9.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.9 series is binary compatible with the 5.8.x series. +Applications compiled for 5.8 will continue to run with 5.9. Exception: +between Qt 5.8.0 and 5.9.0 the QWaylandQuickOutput class was changed +in a binary incompatible way. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + + +**************************************************************************** +* Qt Wayland QPA Plugin 5.9.4 Changes * +**************************************************************************** + + - [QTBUG-64631] Fix freeze on resize with Weston and Qt Wayland Compositors + +**************************************************************************** +* Qt Wayland Compositor API 5.9.4 Changes * +**************************************************************************** + + - Fix memory leak when client attached a new Wayland buffer. + + - [QTBUG-64841] Fix decoding of multi-planar surfaces (YUV video) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index cff380e8..6661d8e7 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -1031,7 +1031,7 @@ QVariant QWaylandWindow::property(const QString &name, const QVariant &defaultVa void QWaylandWindow::requestUpdate() { - if (!mFrameCallback) + if (!mWaitingForFrameSync) QPlatformWindow::requestUpdate(); else mUpdateRequested = true; diff --git a/src/client/qwaylandxdgshellv6.cpp b/src/client/qwaylandxdgshellv6.cpp index d9302ed5..1a60d653 100644 --- a/src/client/qwaylandxdgshellv6.cpp +++ b/src/client/qwaylandxdgshellv6.cpp @@ -125,6 +125,8 @@ QWaylandXdgSurfaceV6::QWaylandXdgSurfaceV6(QWaylandXdgShellV6 *shell, ::zxdg_sur QWaylandXdgSurfaceV6::~QWaylandXdgSurfaceV6() { + if (m_toplevel) + zxdg_toplevel_v6_destroy(m_toplevel->object()); if (m_popup) zxdg_popup_v6_destroy(m_popup->object()); destroy(); diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp index 2a9e39ed..f4dd6f49 100644 --- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp @@ -407,7 +407,7 @@ bool QWaylandGLContext::makeCurrent(QPlatformSurface *surface) window->createDecoration(); if (eglSurface == EGL_NO_SURFACE) { - window->updateSurface(true); + window->updateSurface(window->isExposed()); eglSurface = window->eglSurface(); } diff --git a/src/plugins/hardwareintegration/client/wayland-egl/wayland-egl.pro b/src/plugins/hardwareintegration/client/wayland-egl/wayland-egl.pro index d85c5efa..409cd37d 100644 --- a/src/plugins/hardwareintegration/client/wayland-egl/wayland-egl.pro +++ b/src/plugins/hardwareintegration/client/wayland-egl/wayland-egl.pro @@ -7,6 +7,8 @@ OTHER_FILES += \ SOURCES += main.cpp +TARGET = qt-plugin-wayland-egl + PLUGIN_TYPE = wayland-graphics-integration-client PLUGIN_CLASS_NAME = QWaylandEglClientBufferPlugin load(qt_plugin) diff --git a/tests/auto/client/client/tst_client.cpp b/tests/auto/client/client/tst_client.cpp index 3897bd3b..aed601d8 100644 --- a/tests/auto/client/client/tst_client.cpp +++ b/tests/auto/client/client/tst_client.cpp @@ -35,6 +35,8 @@ #include <QMimeData> #include <QPixmap> #include <QDrag> +#include <QWindow> +#include <QOpenGLWindow> #include <QtTest/QtTest> #include <QtWaylandClient/private/qwaylandintegration_p.h> @@ -112,6 +114,25 @@ public: QPoint mousePressPos; }; +class TestGlWindow : public QOpenGLWindow +{ + Q_OBJECT + +public: + TestGlWindow(); + +protected: + void paintGL() override; +}; + +TestGlWindow::TestGlWindow() +{} + +void TestGlWindow::paintGL() +{ + glClear(GL_COLOR_BUFFER_BIT); +} + class tst_WaylandClient : public QObject { Q_OBJECT @@ -149,6 +170,7 @@ private slots: void dontCrashOnMultipleCommits(); void hiddenTransientParent(); void hiddenPopupParent(); + void glWindow(); private: MockCompositor *compositor; @@ -409,6 +431,21 @@ void tst_WaylandClient::hiddenPopupParent() QTRY_VERIFY(compositor->surface()); } +void tst_WaylandClient::glWindow() +{ + QSKIP("Skipping GL tests, as not supported by all CI systems: See https://bugreports.qt.io/browse/QTBUG-65802"); + + QScopedPointer<TestGlWindow> testWindow(new TestGlWindow); + testWindow->show(); + QSharedPointer<MockSurface> surface; + QTRY_VERIFY(surface = compositor->surface()); + + //confirm we don't crash when we delete an already hidden GL window + //QTBUG-65553 + testWindow->setVisible(false); + QTRY_VERIFY(!compositor->surface()); +} + int main(int argc, char **argv) { setenv("XDG_RUNTIME_DIR", ".", 1); |