From 54e4b5554470b10742949686e4f7ab05dc711c8090edde00ee228e0ddcaea169 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Sat, 2 Jun 2018 09:51:57 +0000 Subject: [PATCH] Accepting request 611689 from KDE:Qt5 Qt 5.11.0 (forwarded request 611399 from Vogtinator) OBS-URL: https://build.opensuse.org/request/show/611689 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtwayland?expand=0&rev=20 --- ...imize-minimize-fullscreen-xdgshellv6.patch | 145 +++++++++++++++ ...lement-basic-key-composition-support.patch | 176 ------------------ ...ange-scale-when-entering-a-new-outpu.patch | 139 -------------- Dont-recreate-hidden-egl-surfaces.patch | 103 ---------- libqt5-qtwayland.changes | 78 ++++++++ libqt5-qtwayland.spec | 40 ++-- qtwayland-everywhere-src-5.10.0.tar.xz | 3 - qtwayland-everywhere-src-5.11.0.tar.xz | 3 + 8 files changed, 250 insertions(+), 437 deletions(-) create mode 100644 0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch delete mode 100644 0001-Implement-basic-key-composition-support.patch delete mode 100644 0002-Automatically-change-scale-when-entering-a-new-outpu.patch delete mode 100644 Dont-recreate-hidden-egl-surfaces.patch delete mode 100644 qtwayland-everywhere-src-5.10.0.tar.xz create mode 100644 qtwayland-everywhere-src-5.11.0.tar.xz diff --git a/0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch b/0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch new file mode 100644 index 0000000..6802467 --- /dev/null +++ b/0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch @@ -0,0 +1,145 @@ +From da43d51dcbafc5fa1db245efd6737aa54c245afb Mon Sep 17 00:00:00 2001 +From: Giulio Camuffo +Date: Sat, 1 Jul 2017 09:53:07 +0200 +Subject: [PATCH] Handle maximize/minimize/fullscreen in xdg_shell_v6 + +Change-Id: I385eb3279d91f1c38d2f5d46bc63b324f0456ca4 +--- + src/client/qwaylandwindow.cpp | 6 +++- + src/client/qwaylandxdgshellv6.cpp | 61 ++++++++++++++++++++++++++++++++++++--- + src/client/qwaylandxdgshellv6_p.h | 8 ++++- + 3 files changed, 69 insertions(+), 6 deletions(-) + +Index: qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandwindow.cpp +=================================================================== +--- qtwayland-everywhere-src-5.11.0-beta2.orig/src/client/qwaylandwindow.cpp ++++ qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandwindow.cpp +@@ -980,7 +980,11 @@ bool QWaylandWindow::setWindowStateInter + // As of february 2013 QWindow::setWindowState sets the new state value after + // QPlatformWindow::setWindowState returns, so we cannot rely on QWindow::windowState + // here. We use then this mState variable. +- mState = state; ++ // NOTE: The compositor does not tell us when the window is not minimized anymore, ++ // so we store the state except for the WindowMinimized value, to make sure that ++ // the equality check above does not return true when setWindowState(Qt::WindowMinimized) ++ // is called, even though the window is actually not minimized anymore. ++ mState = state & ~Qt::WindowMinimized; + + if (mShellSurface) { + createDecoration(); +Index: qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6.cpp +=================================================================== +--- qtwayland-everywhere-src-5.11.0-beta2.orig/src/client/qwaylandxdgshellv6.cpp ++++ qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6.cpp +@@ -56,6 +56,8 @@ QWaylandXdgSurfaceV6::Toplevel::Toplevel + : QtWayland::zxdg_toplevel_v6(xdgSurface->get_toplevel()) + , m_xdgSurface(xdgSurface) + { ++ m_configureState.fullscreen = false; ++ m_configureState.maximized = false; + } + + QWaylandXdgSurfaceV6::Toplevel::~Toplevel() +@@ -75,13 +77,35 @@ void QWaylandXdgSurfaceV6::Toplevel::zxd + m_configureState.width = width; + m_configureState.height = height; + ++ bool wasMaximized = m_configureState.maximized; ++ bool wasFullscreen = m_configureState.fullscreen; ++ + uint32_t *state = reinterpret_cast(states->data); + size_t numStates = states->size / sizeof(uint32_t); +- m_configureState.states.reserve(numStates); +- m_configureState.states.clear(); + +- for (size_t i = 0; i < numStates; i++) +- m_configureState.states << state[i]; ++ m_configureState.fullscreen = false; ++ m_configureState.maximized = false; ++ ++ for (size_t i = 0; i < numStates; i++) { ++ switch (state[i]) { ++ case ZXDG_TOPLEVEL_V6_STATE_MAXIMIZED: ++ m_configureState.maximized = true; ++ break; ++ case ZXDG_TOPLEVEL_V6_STATE_FULLSCREEN: ++ m_configureState.fullscreen = true; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ if ((!wasMaximized && m_configureState.maximized) || (!wasFullscreen && m_configureState.fullscreen)) ++ m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size(); ++ ++ if ((width == 0 || height == 0) && !m_normalSize.isEmpty()) { ++ m_configureState.width = m_normalSize.width(); ++ m_configureState.height = m_normalSize.height(); ++ } + } + + void QWaylandXdgSurfaceV6::Toplevel::zxdg_toplevel_v6_close() +@@ -232,6 +256,35 @@ void QWaylandXdgSurfaceV6::zxdg_surface_ + ack_configure(serial); + } + ++void QWaylandXdgSurfaceV6::setMaximized() ++{ ++ if (m_toplevel) ++ m_toplevel->set_maximized(); ++} ++ ++void QWaylandXdgSurfaceV6::setFullscreen() ++{ ++ if (m_toplevel) ++ m_toplevel->set_fullscreen(nullptr); ++} ++ ++void QWaylandXdgSurfaceV6::setNormal() ++{ ++ if (!m_toplevel) ++ return; ++ ++ if (m_toplevel->m_configureState.maximized) ++ m_toplevel->unset_maximized(); ++ if (m_toplevel->m_configureState.fullscreen) ++ m_toplevel->unset_fullscreen(); ++} ++ ++void QWaylandXdgSurfaceV6::setMinimized() ++{ ++ if (m_toplevel) ++ m_toplevel->set_minimized(); ++} ++ + + + QWaylandXdgShellV6::QWaylandXdgShellV6(struct ::wl_registry *registry, uint32_t id, uint32_t availableVersion) +Index: qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6_p.h +=================================================================== +--- qtwayland-everywhere-src-5.11.0-beta2.orig/src/client/qwaylandxdgshellv6_p.h ++++ qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6_p.h +@@ -88,6 +88,10 @@ public: + + protected: + void zxdg_surface_v6_configure(uint32_t serial) override; ++ void setMaximized() override; ++ void setFullscreen() override; ++ void setNormal() override; ++ void setMinimized() override; + + private: + class Toplevel: public QtWayland::zxdg_toplevel_v6 +@@ -103,8 +107,10 @@ private: + + struct { + int32_t width, height; +- QVarLengthArray states; ++ bool maximized; ++ bool fullscreen; + } m_configureState; ++ QSize m_normalSize; + + QWaylandXdgSurfaceV6 *m_xdgSurface = nullptr; + }; diff --git a/0001-Implement-basic-key-composition-support.patch b/0001-Implement-basic-key-composition-support.patch deleted file mode 100644 index 98e417c..0000000 --- a/0001-Implement-basic-key-composition-support.patch +++ /dev/null @@ -1,176 +0,0 @@ -From 867cf6e37a657fea1bd847494d80b9b65678f5d8 Mon Sep 17 00:00:00 2001 -From: Giulio Camuffo -Date: Fri, 1 May 2015 17:12:22 +0300 -Subject: [PATCH 1/2] Implement basic key composition support - -Use xkbcommon-compose to handle basic compose key support. We should expand on -it in the future to handle things like resetting the compose state on text -field switching. - -Task-number: QTBUG-54792 -Task-number: QTBUG-64572 -Change-Id: I9d1d5ca4c9991928e12979f69eaa477e0cb28ada -Reviewed-by: Paul Olav Tvete ---- - src/client/qwaylandinputdevice.cpp | 65 +++++++++++++++++++++++++++++++++++++- - src/client/qwaylandinputdevice_p.h | 9 ++++++ - 2 files changed, 73 insertions(+), 1 deletion(-) - -diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp -index 4def0de8..90b27769 100644 ---- a/src/client/qwaylandinputdevice.cpp -+++ b/src/client/qwaylandinputdevice.cpp -@@ -70,6 +70,10 @@ - - #include - -+#if QT_CONFIG(xkbcommon_evdev) -+#include -+#endif -+ - QT_BEGIN_NAMESPACE - - namespace QtWaylandClient { -@@ -113,6 +117,7 @@ bool QWaylandInputDevice::Keyboard::createDefaultKeyMap() - qWarning() << "xkb_map_new_from_names failed, no key input"; - return false; - } -+ createComposeState(); - return true; - } - -@@ -125,11 +130,41 @@ void QWaylandInputDevice::Keyboard::releaseKeyMap() - if (mXkbContext) - xkb_context_unref(mXkbContext); - } -+ -+void QWaylandInputDevice::Keyboard::createComposeState() -+{ -+ static const char *locale = nullptr; -+ if (!locale) { -+ locale = getenv("LC_ALL"); -+ if (!locale) -+ locale = getenv("LC_CTYPE"); -+ if (!locale) -+ locale = getenv("LANG"); -+ if (!locale) -+ locale = "C"; -+ } -+ -+ mXkbComposeTable = xkb_compose_table_new_from_locale(mXkbContext, locale, XKB_COMPOSE_COMPILE_NO_FLAGS); -+ if (mXkbComposeTable) -+ mXkbComposeState = xkb_compose_state_new(mXkbComposeTable, XKB_COMPOSE_STATE_NO_FLAGS); -+} -+ -+void QWaylandInputDevice::Keyboard::releaseComposeState() -+{ -+ if (mXkbComposeState) -+ xkb_compose_state_unref(mXkbComposeState); -+ if (mXkbComposeTable) -+ xkb_compose_table_unref(mXkbComposeTable); -+ mXkbComposeState = nullptr; -+ mXkbComposeTable = nullptr; -+} -+ - #endif - - QWaylandInputDevice::Keyboard::~Keyboard() - { - #if QT_CONFIG(xkbcommon_evdev) -+ releaseComposeState(); - releaseKeyMap(); - #endif - if (mFocus) -@@ -632,6 +667,7 @@ void QWaylandInputDevice::Keyboard::keyboard_keymap(uint32_t format, int32_t fd, - - // Release the old keymap resources in the case they were already created in - // the key event or when the compositor issues a new map -+ releaseComposeState(); - releaseKeyMap(); - - mXkbContext = xkb_context_new(xkb_context_flags(0)); -@@ -640,6 +676,8 @@ void QWaylandInputDevice::Keyboard::keyboard_keymap(uint32_t format, int32_t fd, - close(fd); - - mXkbState = xkb_state_new(mXkbMap); -+ createComposeState(); -+ - #else - Q_UNUSED(format); - Q_UNUSED(fd); -@@ -723,12 +761,37 @@ void QWaylandInputDevice::Keyboard::keyboard_key(uint32_t serial, uint32_t time, - return; - } - -- const xkb_keysym_t sym = xkb_state_key_get_one_sym(mXkbState, code); -+ QString composedText; -+ xkb_keysym_t sym = xkb_state_key_get_one_sym(mXkbState, code); -+ if (mXkbComposeState) { -+ if (isDown) -+ xkb_compose_state_feed(mXkbComposeState, sym); -+ xkb_compose_status status = xkb_compose_state_get_status(mXkbComposeState); -+ -+ switch (status) { -+ case XKB_COMPOSE_COMPOSED: { -+ int size = xkb_compose_state_get_utf8(mXkbComposeState, nullptr, 0); -+ QVarLengthArray buffer(size + 1); -+ xkb_compose_state_get_utf8(mXkbComposeState, buffer.data(), buffer.size()); -+ composedText = QString::fromUtf8(buffer.constData()); -+ sym = xkb_compose_state_get_one_sym(mXkbComposeState); -+ xkb_compose_state_reset(mXkbComposeState); -+ } break; -+ case XKB_COMPOSE_COMPOSING: -+ case XKB_COMPOSE_CANCELLED: -+ return; -+ case XKB_COMPOSE_NOTHING: -+ break; -+ } -+ } - - Qt::KeyboardModifiers modifiers = mParent->modifiers(); - - std::tie(qtkey, text) = QWaylandXkb::keysymToQtKey(sym, modifiers); - -+ if (!composedText.isNull()) -+ text = composedText; -+ - sendKey(window->window(), time, type, qtkey, modifiers, code, sym, mNativeModifiers, text); - #else - // Generic fallback for single hard keys: Assume 'key' is a Qt key code. -diff --git a/src/client/qwaylandinputdevice_p.h b/src/client/qwaylandinputdevice_p.h -index 9e3d1d1f..b1424981 100644 ---- a/src/client/qwaylandinputdevice_p.h -+++ b/src/client/qwaylandinputdevice_p.h -@@ -76,6 +76,11 @@ - struct wl_cursor_image; - #endif - -+#if QT_CONFIG(xkbcommon_evdev) -+struct xkb_compose_state; -+struct xkb_compose_table; -+#endif -+ - QT_BEGIN_NAMESPACE - - namespace QtWaylandClient { -@@ -207,6 +212,8 @@ public: - xkb_context *mXkbContext; - xkb_keymap *mXkbMap; - xkb_state *mXkbState; -+ xkb_compose_table *mXkbComposeTable = nullptr; -+ xkb_compose_state *mXkbComposeState = nullptr; - #endif - uint32_t mNativeModifiers; - -@@ -228,6 +235,8 @@ private: - #if QT_CONFIG(xkbcommon_evdev) - bool createDefaultKeyMap(); - void releaseKeyMap(); -+ void createComposeState(); -+ void releaseComposeState(); - #endif - - }; --- -2.15.0 - diff --git a/0002-Automatically-change-scale-when-entering-a-new-outpu.patch b/0002-Automatically-change-scale-when-entering-a-new-outpu.patch deleted file mode 100644 index 1844e72..0000000 --- a/0002-Automatically-change-scale-when-entering-a-new-outpu.patch +++ /dev/null @@ -1,139 +0,0 @@ -From ae858fe3d5a81b8ce5ab1d6ce7e2e6a65a11cc14 Mon Sep 17 00:00:00 2001 -From: Johan Klokkhammer Helsing -Date: Fri, 18 Aug 2017 13:08:50 +0200 -Subject: [PATCH 2/2] Automatically change scale when entering a new output - -Change-Id: I99198d47eac5b2091fe2bfd8fc24646be9c9890a -Reviewed-by: Pier Luigi Fiorini -Reviewed-by: David Edmundson ---- - src/client/qwaylandwindow.cpp | 27 ++++++++++++++++++---- - src/client/qwaylandwindow_p.h | 2 ++ - .../client/wayland-egl/qwaylandeglwindow.cpp | 5 ++++ - .../client/wayland-egl/qwaylandeglwindow.h | 1 + - 4 files changed, 31 insertions(+), 4 deletions(-) - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 6d7c0885..c7490532 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -128,6 +128,12 @@ QWaylandWindow::~QWaylandWindow() - } - } - -+void QWaylandWindow::ensureSize() -+{ -+ if (mBackingStore) -+ mBackingStore->ensureSize(); -+} -+ - void QWaylandWindow::initWindow() - { - if (window()->type() == Qt::Desktop) -@@ -196,7 +202,6 @@ void QWaylandWindow::initWindow() - // Enable high-dpi rendering. Scale() returns the screen scale factor and will - // typically be integer 1 (normal-dpi) or 2 (high-dpi). Call set_buffer_scale() - // to inform the compositor that high-resolution buffers will be provided. -- //FIXME this needs to be changed when the screen changes along with a resized backing store - if (mDisplay->compositorVersion() >= 3) - set_buffer_scale(scale()); - -@@ -516,7 +521,7 @@ void QWaylandWindow::surface_enter(wl_output *output) - - QWaylandScreen *newScreen = calculateScreenFromSurfaceEvents(); - if (oldScreen != newScreen) //currently this will only happen if the first wl_surface.enter is for a non-primary screen -- QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen()); -+ handleScreenChanged(); - } - - void QWaylandWindow::surface_leave(wl_output *output) -@@ -533,7 +538,7 @@ void QWaylandWindow::surface_leave(wl_output *output) - - QWaylandScreen *newScreen = calculateScreenFromSurfaceEvents(); - if (oldScreen != newScreen) -- QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen()); -+ handleScreenChanged(); - } - - void QWaylandWindow::handleScreenRemoved(QScreen *qScreen) -@@ -543,7 +548,7 @@ void QWaylandWindow::handleScreenRemoved(QScreen *qScreen) - if (wasRemoved) { - QWaylandScreen *newScreen = calculateScreenFromSurfaceEvents(); - if (oldScreen != newScreen) -- QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen()); -+ handleScreenChanged(); - } - } - -@@ -906,6 +911,20 @@ void QWaylandWindow::handleMouseEventWithDecoration(QWaylandInputDevice *inputDe - } - } - -+void QWaylandWindow::handleScreenChanged() -+{ -+ QWaylandScreen *newScreen = calculateScreenFromSurfaceEvents(); -+ QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen()); -+ -+ int scale = newScreen->scale(); -+ if (scale != mScale) { -+ mScale = scale; -+ if (isInitialized() && mDisplay->compositorVersion() >= 3) -+ set_buffer_scale(mScale); -+ ensureSize(); -+ } -+} -+ - #if QT_CONFIG(cursor) - void QWaylandWindow::setMouseCursor(QWaylandInputDevice *device, const QCursor &cursor) - { -diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h -index bd4a3590..5457d655 100644 ---- a/src/client/qwaylandwindow_p.h -+++ b/src/client/qwaylandwindow_p.h -@@ -110,6 +110,7 @@ public: - ~QWaylandWindow(); - - virtual WindowType windowType() const = 0; -+ virtual void ensureSize(); - WId winId() const override; - void setVisible(bool visible) override; - void setParent(const QPlatformWindow *parent) override; -@@ -263,6 +264,7 @@ private: - QWaylandScreen *calculateScreenFromSurfaceEvents() const; - - void handleMouseEventWithDecoration(QWaylandInputDevice *inputDevice, const QWaylandPointerEvent &e); -+ void handleScreenChanged(); - - bool mUpdateRequested; - -diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp -index 6b5c5326..87f3e2d4 100644 ---- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp -+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp -@@ -92,6 +92,11 @@ QWaylandWindow::WindowType QWaylandEglWindow::windowType() const - return QWaylandWindow::Egl; - } - -+void QWaylandEglWindow::ensureSize() -+{ -+ updateSurface(false); -+} -+ - void QWaylandEglWindow::setGeometry(const QRect &rect) - { - QWaylandWindow::setGeometry(rect); -diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h -index e471a8f7..77aee56d 100644 ---- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h -+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h -@@ -59,6 +59,7 @@ public: - QWaylandEglWindow(QWindow *window); - ~QWaylandEglWindow(); - WindowType windowType() const override; -+ void ensureSize() override; - - void updateSurface(bool create); - virtual void setGeometry(const QRect &rect) override; --- -2.15.0 - diff --git a/Dont-recreate-hidden-egl-surfaces.patch b/Dont-recreate-hidden-egl-surfaces.patch deleted file mode 100644 index e1c6f85..0000000 --- a/Dont-recreate-hidden-egl-surfaces.patch +++ /dev/null @@ -1,103 +0,0 @@ -From a343c589a966d0342fcc75e0d6ce24e1f5157540 Mon Sep 17 00:00:00 2001 -From: David Edmundson -Date: Wed, 3 Jan 2018 19:18:42 +0000 -Subject: [PATCH] Don't recreate hidden egl surfaces - -QWaylandEglWindow deletes surfaces when a window changes from hidden to -visible, presumably as a result of us not having a valid wl_surface -object. By extension it doesn't make sense to create a surface whilst a -window is still hidden. - -This fixes a crash where a QQuickWindow hides and then is destroyed. In -QQuickWindow destruction we have to create a valid context in order to -delete any textures/assets owned by the scene graph; as the wl_surface -has gone this causes an error in the EGL libs when we create an EGL -surface. - -Task-number: QTBUG-65553 -Change-Id: I9b37a86326bf2cd7737c4e839c1aa8c74cf08116 ---- - .../client/wayland-egl/qwaylandglcontext.cpp | 2 +- - tests/auto/client/client/tst_client.cpp | 35 ++++++++++++++++++++++ - 2 files changed, 36 insertions(+), 1 deletion(-) - -Index: qtwayland-everywhere-src-5.10.0/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp -=================================================================== ---- qtwayland-everywhere-src-5.10.0.orig/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp -+++ qtwayland-everywhere-src-5.10.0/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp -@@ -407,7 +407,7 @@ bool QWaylandGLContext::makeCurrent(QPla - window->createDecoration(); - - if (eglSurface == EGL_NO_SURFACE) { -- window->updateSurface(true); -+ window->updateSurface(window->isExposed()); - eglSurface = window->eglSurface(); - } - -Index: qtwayland-everywhere-src-5.10.0/tests/auto/client/client/tst_client.cpp -=================================================================== ---- qtwayland-everywhere-src-5.10.0.orig/tests/auto/client/client/tst_client.cpp -+++ qtwayland-everywhere-src-5.10.0/tests/auto/client/client/tst_client.cpp -@@ -35,6 +35,8 @@ - #include - #include - #include -+#include -+#include - - #include - -@@ -108,6 +110,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 -@@ -145,6 +166,7 @@ private slots: - void dontCrashOnMultipleCommits(); - void hiddenTransientParent(); - void hiddenPopupParent(); -+ void glWindow(); - - private: - MockCompositor *compositor; -@@ -404,6 +426,19 @@ void tst_WaylandClient::hiddenPopupParen - QTRY_VERIFY(compositor->surface()); - } - -+void tst_WaylandClient::glWindow() -+{ -+ QScopedPointer testWindow(new TestGlWindow); -+ testWindow->show(); -+ QSharedPointer 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); diff --git a/libqt5-qtwayland.changes b/libqt5-qtwayland.changes index 3de0b34..3d56178 100644 --- a/libqt5-qtwayland.changes +++ b/libqt5-qtwayland.changes @@ -1,3 +1,81 @@ +------------------------------------------------------------------- +Tue May 22 16:16:49 CEST 2018 - fabian@ritter-vogt.de + +- Update to 5.11.0 + * New bugfix release + * For more details please see: + * http://code.qt.io/cgit/qt/qtwayland.git/plain/dist/changes-5.11.0/?h=v5.11.0 + +------------------------------------------------------------------- +Tue May 8 11:01:44 CEST 2018 - fabian@ritter-vogt.de + +- Update to 5.11.0-rc + * New bugfix release + * No changelog available + +------------------------------------------------------------------- +Mon Apr 23 08:58:08 CEST 2018 - fabian@ritter-vogt.de + +- Update to 5.11.0-beta4 + * New bugfix release + * No changelog available + +------------------------------------------------------------------- +Wed Apr 11 09:15:05 CEST 2018 - fabian@ritter-vogt.de + +- Update to 5.11.0-beta3 + * New bugfix release + * No changelog available + +------------------------------------------------------------------- +Wed Mar 28 09:17:53 CEST 2018 - fabian@ritter-vogt.de + +- Update to 5.11.0-beta2 + * New bugfix release + * No changelog available +- Refresh 0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch + +------------------------------------------------------------------- +Tue Mar 13 13:40:51 UTC 2018 - christophe@krop.fr + +- Fix the license tag. + +------------------------------------------------------------------- +Thu Mar 1 09:55:54 CET 2018 - fabian@ritter-vogt.de + +- Update to 5.11.0-beta1 + * New feature release + * For more details please see: + * http://code.qt.io/cgit/qt/qtwayland.git/plain/dist/changes-5.11.0-beta1/?h=v5.11.0-beta1 + +------------------------------------------------------------------- +Tue Feb 20 14:29:57 CET 2018 - fabian@ritter-vogt.de + +- Update to 5.11.0-alpha + * New feature release + * For more details please see: + * https://wiki.qt.io/New_Features_in_Qt_5.11 +- Remove patches, now upstream: + * 0001-Implement-basic-key-composition-support.patch + * 0002-Automatically-change-scale-when-entering-a-new-outpu.patch + +------------------------------------------------------------------- +Wed Feb 14 15:47:14 CET 2018 - fabian@ritter-vogt.de + +- Update to 5.10.1 + * New bugfix release + * For more details please see: + * http://code.qt.io/cgit/qt/qtwayland.git/plain/dist/changes-5.10.1/?h=v5.10.1 +- Drop patches, now upstream: + * Dont-recreate-hidden-egl-surfaces.patch + +------------------------------------------------------------------- +Sat Feb 10 21:11:54 UTC 2018 - fabian@ritter-vogt.de + +- Add patch (pending upstream) to implement fullscreen windows for + xdg-shell v6 (boo#1080447): + * 0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch + ------------------------------------------------------------------- Tue Jan 9 14:39:26 UTC 2018 - fabian@ritter-vogt.de diff --git a/libqt5-qtwayland.spec b/libqt5-qtwayland.spec index 9bcd156..f183845 100644 --- a/libqt5-qtwayland.spec +++ b/libqt5-qtwayland.spec @@ -19,29 +19,30 @@ %define qt5_snapshot 0 %define libname libQt5WaylandCompositor5 %define base_name libqt5 -%define real_version 5.10.0 -%define so_version 5.10.0 -%define tar_version qtwayland-everywhere-src-5.10.0 +%define real_version 5.11.0 +%define so_version 5.11.0 +%define tar_version qtwayland-everywhere-src-5.11.0 Name: libqt5-qtwayland -Version: 5.10.0 +Version: 5.11.0 Release: 0 Summary: Qt 5 Wayland Addon -License: LGPL-2.1-with-Qt-Company-Qt-exception-1.1 or LGPL-3.0-with-Qt-Company-Qt-exception-1.1 +License: LGPL-2.1-with-Qt-Company-Qt-exception-1.1 or LGPL-3.0-only Group: Development/Libraries/X11 Url: https://www.qt.io -Source: https://download.qt.io/official_releases/qt/5.10/%{real_version}/submodules/%{tar_version}.tar.xz +Source: https://download.qt.io/official_releases/qt/5.11/%{real_version}/submodules/%{tar_version}.tar.xz Source1: baselibs.conf # PATCH-FIX-OPENSUSE Patch1: workaround-null-object.patch -# Pending for upstream 5.9 (https://codereview.qt-project.org/#/c/210552/) -Patch1500: Dont-recreate-hidden-egl-surfaces.patch -# Patches from upstream dev branch -Patch2000: 0001-Implement-basic-key-composition-support.patch -Patch2001: 0002-Automatically-change-scale-when-entering-a-new-outpu.patch +# Pending for upstream 5.9 (https://codereview.qt-project.org/#/c/199123/) +Patch1501: 0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch BuildRequires: fdupes BuildRequires: libqt5-qtbase-private-headers-devel >= %{version} BuildRequires: libqt5-qtdeclarative-private-headers-devel >= %{version} BuildRequires: xz +%if 0%{?suse_version} < 1330 +# It does not build with the default compiler (GCC 4.8) on Leap 42.x +BuildRequires: gcc7-c++ +%endif BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(wayland-client) >= 1.1.0 BuildRequires: pkgconfig(wayland-egl) @@ -108,10 +109,7 @@ Examples for libqt5-qtwayland module. %prep %setup -q -n %{tar_version} -%patch1 -p1 -%patch1500 -p1 -%patch2000 -p1 -%patch2001 -p1 +%autopatch -p1 %post -n libQt5WaylandCompositor5 -p /sbin/ldconfig @@ -130,7 +128,17 @@ Examples for libqt5-qtwayland module. #force the configure script to generate the forwarding headers (it checks whether .git directory exists) mkdir .git %endif -%{_libqt5_qmake} CONFIG+=wayland-compositor +%{_libqt5_qmake} \ +%if 0%{?suse_version} < 1330 + QMAKE_CC=gcc-7 QMAKE_CXX=g++-7 CONFIG+=c++14 \ +%endif + CONFIG+=wayland-compositor + +%if 0%{?suse_version} < 1330 + export CC=gcc-7 + export CXX=g++-7 +%endif + %{make_jobs} %install diff --git a/qtwayland-everywhere-src-5.10.0.tar.xz b/qtwayland-everywhere-src-5.10.0.tar.xz deleted file mode 100644 index 8402ebc..0000000 --- a/qtwayland-everywhere-src-5.10.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5657f9656c95f83880f92e7697a1c13c9739bf4d0bfd867e711fff7c84004b93 -size 378276 diff --git a/qtwayland-everywhere-src-5.11.0.tar.xz b/qtwayland-everywhere-src-5.11.0.tar.xz new file mode 100644 index 0000000..2fac9db --- /dev/null +++ b/qtwayland-everywhere-src-5.11.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68814e8f207f3a90cae29ae49ce2c1f4bf9d06709a7a7962adf23120f1644127 +size 391212