diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-12-05 09:20:49 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-12-05 09:20:49 +0100 |
commit | 4165d11adc6eb28e98742d3cd4ebd96865b5a2fe (patch) | |
tree | 979c47d94009d45c6403f50d4ec260f07d8cab02 | |
parent | 4aeb655d161250c317bdb5a6a86e6a6b01ef5685 (diff) | |
parent | f890798053c7fa692bff7f8a3e96583dfcaba0cb (diff) | |
download | qtwayland-4165d11adc6eb28e98742d3cd4ebd96865b5a2fe.tar.gz |
Merge remote-tracking branch 'origin/5.12.0' into 5.12
Change-Id: Ica38060e6d624a7534660eabec604f6795970c95
6 files changed, 118 insertions, 9 deletions
diff --git a/dist/changes-5.12.0 b/dist/changes-5.12.0 new file mode 100644 index 00000000..9d28e007 --- /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). diff --git a/src/compositor/compositor_api/qwaylandview.cpp b/src/compositor/compositor_api/qwaylandview.cpp index 12759377..1a6bf1a6 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<QWaylandView> deleteGuard(q); emit q->surfaceDestroyed(); - clearFrontBuffer(); + if (!deleteGuard.isNull()) + clearFrontBuffer(); } /*! diff --git a/src/plugins/shellintegration/wl-shell/qwaylandwlshellintegration.cpp b/src/plugins/shellintegration/wl-shell/qwaylandwlshellintegration.cpp index 008da3d8..1edb24b3 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 d032002b..12cc95b1 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); } diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp index fb33b4ab..9e55e3e1 100644 --- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp +++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp @@ -348,6 +348,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 6c98dc6a..1310e340 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp @@ -382,6 +382,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. |