From 7451faab740ec6294159be60d8a713f5e8070c09 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Tue, 30 Oct 2018 19:02:26 +0000 Subject: Client: Explicitly send expose window on first configure Before 88a0246a46c30e08e9730d16cf8739773447d058 we would always call QWaylandWindow::applyConfigure which in turn sends an expose event. Without that clients do not commit their initial buffer. This adds back the expose event on the first received configure. Fixes: QTBUG-71509 Change-Id: Ica39bb23245957948e1e1f75caf4f16f7b086ef7 Reviewed-by: Johan Helsing --- src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp | 1 + src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp index 3d3af6929..c055cbb1f 100644 --- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp +++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp @@ -342,6 +342,7 @@ void QWaylandXdgSurfaceV6::zxdg_surface_v6_configure(uint32_t serial) if (!m_configured) { // We have to do the initial applyConfigure() immediately, since that is the expose. applyConfigure(); + m_exposeRegion = QRegion(QRect(QPoint(), m_window->geometry().size())); } else { // Later configures are probably resizes, so we have to queue them up for a time when we // are not painting to the window. diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp index c723192c8..014b6bed5 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp @@ -376,6 +376,7 @@ void QWaylandXdgSurface::xdg_surface_configure(uint32_t serial) if (!m_configured) { // We have to do the initial applyConfigure() immediately, since that is the expose. applyConfigure(); + m_exposeRegion = QRegion(QRect(QPoint(), m_window->geometry().size())); } else { // Later configures are probably resizes, so we have to queue them up for a time when we // are not painting to the window. -- cgit v1.2.3 From 62137386928f14228db2d10033d9b80875113e33 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Wed, 31 Oct 2018 11:13:12 +0200 Subject: Add changes file for Qt 5.12.0 Change-Id: Iffc0865a07cef3f6a21920aac698934cf0867644 Reviewed-by: Johan Helsing Reviewed-by: David Edmundson Reviewed-by: Paul Olav Tvete --- dist/changes-5.12.0 | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 dist/changes-5.12.0 diff --git a/dist/changes-5.12.0 b/dist/changes-5.12.0 new file mode 100644 index 000000000..9d28e0075 --- /dev/null +++ b/dist/changes-5.12.0 @@ -0,0 +1,105 @@ +Qt 5.12 introduces many new features and improvements as well as bugfixes +over the 5.11.x series. For more details, refer to the online documentation +included in this distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.12 series is binary compatible with the 5.11.x series. +Applications compiled for 5.11 will continue to run with 5.12. + +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. + +**************************************************************************** +* Compositor * +**************************************************************************** + + - [QTBUG-66784] Added APIs for xdg-shell stable. + - xdg-shell unstable v5 is now deprecated. Existing compositors should + migrate to unstable v6 or stable. + - Features for server buffer integrations have been renamed. + "drm-egl-server" is now "wayland-drm-egl-server-buffer" and + "libhybris-egl-server" is "wayland-libhybris-egl-server-buffer". + - [QTBUG-49809] Added support for wl_subsurface.place_above and + place_below in WaylandQuickItem. + - QWaylandQuickItem::sendMouseMoveEvent was added to allow sending + generated mouse move events from QML. + - Added API for installing a socket on which bind() and listen() have + already been called into the event dispatch loop. This facilitates + socket-activated compositors. + - Added a new categorized logging namespace "qt.waylandcompositor" and + renamed "qt.compositor.input.methods" to + "qt.waylandcompositor.inputmethods". + - Fixed a bug where some signals on QWaylandSurface were emitted before + all double buffered state had been applied. + - [QTBUG-70163] Fixed a bug where destroying a WaylandQuickItem would + delete the OpenGL texture for all other WaylandQuickItems using that + surface. + - Fixed a bug that caused some clients to abort in libwayland when a + surface left an output. + - Fixed an issue where the WaylandOutput.window QML property had to be set + before the WaylandOutput.sizeFollowsWindow property. + - Fixed a bug where outputAdded was not emitted if a new output was added + through QWaylandCompositor::setDefaultOutput. + + - xdg-shell v6: + * Requests to enter/exit fullscreen mode are now handled. + * Minimum and maximum sizes are now respected when resizing. + * Fixed an edge case in moving an initially maximized XdgShellV6 surface + to windowed mode. + * ShellSurfaceItems now re-issue configure requests with updated sizes + when the size or available geometry changes on an output used by a + maximized or fullscreen surface. + + - wl-shell: + * ShellSurfaceItems now re-issue configure requests with updated sizes + when the size or available geometry changes on output used by a + maximized or fullscreen surface. + +**************************************************************************** +* QPA plugin * +**************************************************************************** + + - [QTBUG-66783] Added support for xdg-shell stable. + - [QTBUG-69746] Added client-side support for the + xdg-decoration-unstable-v1 Wayland extension. Qt clients will now let + the compositor draw the window decorations if configured through this + extension. + - [QTBUG-68834] The window decorations have had a redesign, they now use + the window background color instead of the blue gradient. + - QT_WAYLAND_SHELL_INTEGRATION environment variable now accepts a + semicolon-separated list of shell integrations. + - [QTBUG-68838] Deprecated the shell integrations for + xdg-shell-unstable-v5 and wl-shell. The stable version of xdg-shell + should be used instead. + - All shell integrations have been moved to plugins. + - Window decorations are now automatically disabled for ivi-application. + - Added support for xdg-output-unstable-v1 + - Font and UI scaling is now based on the screen scale factor rather than + the physical DPI. The logical DPI is set to 96 unless overridden by the + the environment variable QT_WAYLAND_FORCE_DPI, which may be set to a + specific DPI or to "physical" to get the old behavior. + - Cursors now follow the device pixel ratio of the current screen. + - Cursor themes are now loaded on-demand, leading to significant memory + savings in some cases. + - Fixed a bug where QSurfaceFormat::renderableType() was ignored when + creating an OpenGL context. + - Fixed a bug where the arrow cursor would be shown instead of the resize + cursor when hovering over the window decoration border. + - [QTBUG-70242][QTBUG-68605][QTBUG-67601] Fixed a bug where offscreen + surfaces would get surfaceless EGL contexts. + + - xdg-shell v6: + * Fixed a bug where maximized windows would resize to their unmaximized + size if the compositor sent an invalid configure event. + * Fixed a bug where buffers were sometimes attached and committed before + the first configure event, causing protocol errors. + * [QTBUG-63417][QTBUG-63748] Implemented support for maximizing, + minimizing, and setting fullscreen with xdg-shell unstable v6. + * [QTBUG-53702] QWindow::isActive now follows configure events on + xdg-shell unstable v6 (like v5). -- cgit v1.2.3 From 88eb34213b35bfac292397e784ac20341f216ab4 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 7 Nov 2018 11:23:44 +0100 Subject: Only print deprecation warning when using deprecated shells Avoids printing deprecation warnings for shells that are available by default but not actually used. In particular, avoids warning about wl-shell when using ivi-shell. Change-Id: Id075e97572e6ec876ad24f369808c61a479e9b07 Reviewed-by: Johan Helsing --- .../shellintegration/wl-shell/qwaylandwlshellintegration.cpp | 8 ++++---- .../xdg-shell-v5/qwaylandxdgshellv5integration.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/shellintegration/wl-shell/qwaylandwlshellintegration.cpp b/src/plugins/shellintegration/wl-shell/qwaylandwlshellintegration.cpp index 008da3d8a..1edb24b3c 100644 --- a/src/plugins/shellintegration/wl-shell/qwaylandwlshellintegration.cpp +++ b/src/plugins/shellintegration/wl-shell/qwaylandwlshellintegration.cpp @@ -49,10 +49,6 @@ namespace QtWaylandClient { bool QWaylandWlShellIntegration::initialize(QWaylandDisplay *display) { - qCWarning(lcQpaWayland) << "\"wl-shell\" is a deprecated shell extension, prefer using" - << "\"xdg-shell-v6\" or \"xdg-shell\" if supported by the compositor" - << "by setting the environment variable QT_WAYLAND_SHELL_INTEGRATION"; - Q_FOREACH (QWaylandDisplay::RegistryGlobal global, display->globals()) { if (global.interface == QLatin1String("wl_shell")) { m_wlShell = new QtWayland::wl_shell(display->wl_registry(), global.id, 1); @@ -65,6 +61,10 @@ bool QWaylandWlShellIntegration::initialize(QWaylandDisplay *display) return false; } + qCWarning(lcQpaWayland) << "\"wl-shell\" is a deprecated shell extension, prefer using" + << "\"xdg-shell-v6\" or \"xdg-shell\" if supported by the compositor" + << "by setting the environment variable QT_WAYLAND_SHELL_INTEGRATION"; + return QWaylandShellIntegration::initialize(display); } diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp index d032002b1..12cc95b15 100644 --- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp +++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp @@ -51,10 +51,6 @@ namespace QtWaylandClient { bool QWaylandXdgShellV5Integration::initialize(QWaylandDisplay *display) { - qCWarning(lcQpaWayland) << "\"xdg-shell-v5\" is a deprecated shell extension, prefer using" - << "\"xdg-shell-v6\" or \"xdg-shell\" if supported by the compositor" - << "by setting the environment variable QT_WAYLAND_SHELL_INTEGRATION"; - Q_FOREACH (QWaylandDisplay::RegistryGlobal global, display->globals()) { if (global.interface == QLatin1String("xdg_shell")) { m_xdgShell.reset(new QWaylandXdgShellV5(display->wl_registry(), global.id)); @@ -67,6 +63,10 @@ bool QWaylandXdgShellV5Integration::initialize(QWaylandDisplay *display) return false; } + qCWarning(lcQpaWayland) << "\"xdg-shell-v5\" is a deprecated shell extension, prefer using" + << "\"xdg-shell-v6\" or \"xdg-shell\" if supported by the compositor" + << "by setting the environment variable QT_WAYLAND_SHELL_INTEGRATION"; + return QWaylandShellIntegration::initialize(display); } -- cgit v1.2.3 From f890798053c7fa692bff7f8a3e96583dfcaba0cb Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 7 Nov 2018 14:19:04 +0100 Subject: Don't crash if view is deleted from surfaceDestroyed signal Fix regression introduced in 297bcd005c4205f69e1bf9e9dc565ab757cf0bac Fixes: QTBUG-71643 Change-Id: I769518a9ca13fcd13ea277c7fa8ac1885ca123ba Reviewed-by: Johan Helsing --- src/compositor/compositor_api/qwaylandview.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compositor/compositor_api/qwaylandview.cpp b/src/compositor/compositor_api/qwaylandview.cpp index 127593770..1a6bf1a64 100644 --- a/src/compositor/compositor_api/qwaylandview.cpp +++ b/src/compositor/compositor_api/qwaylandview.cpp @@ -56,8 +56,10 @@ void QWaylandViewPrivate::markSurfaceAsDestroyed(QWaylandSurface *surface) Q_ASSERT(surface == this->surface); setSurface(nullptr); + QPointer deleteGuard(q); emit q->surfaceDestroyed(); - clearFrontBuffer(); + if (!deleteGuard.isNull()) + clearFrontBuffer(); } /*! -- cgit v1.2.3