Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libqt5-qtwayland for openSUSE:Factory checked in at 2023-01-11 14:33:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqt5-qtwayland (Old) and /work/SRC/openSUSE:Factory/.libqt5-qtwayland.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtwayland" Wed Jan 11 14:33:11 2023 rev:48 rq:1057247 version:5.15.8+kde57 Changes: -------- --- /work/SRC/openSUSE:Factory/libqt5-qtwayland/libqt5-qtwayland.changes 2022-11-04 17:32:47.672129228 +0100 +++ /work/SRC/openSUSE:Factory/.libqt5-qtwayland.new.32243/libqt5-qtwayland.changes 2023-01-11 14:33:48.772809800 +0100 @@ -1,0 +2,18 @@ +Mon Jan 9 09:24:02 UTC 2023 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to version 5.15.8+kde57, rebased upstream: + * client: Avoid protocol error with invalid min/max size + * Fixes the build on CentOS + * Client: Handle zwp_primary_selection_device_manager_v1 global removal + * Fix frame sync related to unprotected multithread access + * Client: Bump wl_output version + * Client: Call wl_output_release() upon QWaylandScreen destruction + * Client: Add F_SEAL_SHRINK seal to shm backing file + * Revert "Client: Ensure that wl_surface lives as long as qtquick render thread needs it" + * Keep toplevel windows in the top left corner of the screen + * Client: Ensure that wl_surface lives as long as qtquick render thread needs it + * Use a correct serial for xdg_surface.ack_configure + * tst_seatv4: fix compilation with GCC/C++20 + * tst_seatv4: fix deprecated implicit capture of this by [=] + +------------------------------------------------------------------- Old: ---- qtwayland-everywhere-src-5.15.7+kde49.obscpio New: ---- qtwayland-everywhere-src-5.15.8+kde57.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqt5-qtwayland.spec ++++++ --- /var/tmp/diff_new_pack.Zk82h6/_old 2023-01-11 14:33:49.672814888 +0100 +++ /var/tmp/diff_new_pack.Zk82h6/_new 2023-01-11 14:33:49.676814910 +0100 @@ -22,11 +22,11 @@ %define qt5_snapshot 1 %define libname libQt5WaylandCompositor5 %define base_name libqt5 -%define real_version 5.15.7 -%define so_version 5.15.7 +%define real_version 5.15.8 +%define so_version 5.15.8 %define tar_version qtwayland-everywhere-src-%{version} Name: libqt5-qtwayland -Version: 5.15.7+kde49 +Version: 5.15.8+kde57 Release: 0 Summary: Qt 5 Wayland Addon # The wayland compositor files are GPL-3.0-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Zk82h6/_old 2023-01-11 14:33:49.720815159 +0100 +++ /var/tmp/diff_new_pack.Zk82h6/_new 2023-01-11 14:33:49.724815182 +0100 @@ -1,12 +1,12 @@ <services> <service name="obs_scm" mode="disabled"> <param name="changesgenerate">enable</param> - <param name="versionformat">5.15.7+kde@TAG_OFFSET@</param> + <param name="versionformat">5.15.8+kde@TAG_OFFSET@</param> <param name="url">https://invent.kde.org/qt/qt/qtwayland.git</param> <param name="scm">git</param> <param name="filename">qtwayland-everywhere-src</param> <param name="revision">kde/5.15</param> - <param name="parent-tag">v5.15.7-lts-lgpl</param> + <param name="parent-tag">v5.15.8-lts-lgpl</param> <param name="changesgenerate">enable</param> </service> <service name="set_version" mode="disabled"/> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.Zk82h6/_old 2023-01-11 14:33:49.744815295 +0100 +++ /var/tmp/diff_new_pack.Zk82h6/_new 2023-01-11 14:33:49.748815318 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://invent.kde.org/qt/qt/qtwayland.git</param> - <param name="changesrevision">8f0c9169310344c8f179311bae446239cdb61f68</param></service></servicedata> + <param name="changesrevision">f6a1e838e371dc90272c62daeea597fe487dec3e</param></service></servicedata> (No newline at EOF) ++++++ qtwayland-everywhere-src-5.15.7+kde49.obscpio -> qtwayland-everywhere-src-5.15.8+kde57.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/.qmake.conf new/qtwayland-everywhere-src-5.15.8+kde57/.qmake.conf --- old/qtwayland-everywhere-src-5.15.7+kde49/.qmake.conf 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/.qmake.conf 2023-01-05 07:51:24.000000000 +0100 @@ -4,4 +4,4 @@ DEFINES += QT_NO_JAVA_STYLE_ITERATORS DEFINES += QT_NO_LINKED_LIST -MODULE_VERSION = 5.15.7 +MODULE_VERSION = 5.15.8 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylanddisplay.cpp new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylanddisplay.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylanddisplay.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylanddisplay.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -515,6 +515,8 @@ #if QT_CONFIG(wayland_client_primary_selection) } else if (interface == QStringLiteral("zwp_primary_selection_device_manager_v1")) { mPrimarySelectionManager.reset(new QWaylandPrimarySelectionDeviceManagerV1(this, id, 1)); + for (QWaylandInputDevice *inputDevice : qAsConst(mInputDevices)) + inputDevice->setPrimarySelectionDevice(mPrimarySelectionManager->createDevice(inputDevice)); #endif } else if (interface == QStringLiteral("zwp_text_input_manager_v2") && !mClientSideInputContextRequested) { mTextInputManager.reset(new QtWayland::zwp_text_input_manager_v2(registry, id, 1)); @@ -573,6 +575,13 @@ inputDevice->setTextInput(nullptr); mWaylandIntegration->reconfigureInputContext(); } +#if QT_CONFIG(wayland_client_primary_selection) + if (global.interface == QStringLiteral("zwp_primary_selection_device_manager_v1")) { + mPrimarySelectionManager.reset(); + for (QWaylandInputDevice *inputDevice : qAsConst(mInputDevices)) + inputDevice->setPrimarySelectionDevice(nullptr); + } +#endif mGlobals.removeAt(i); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandintegration.cpp new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandintegration.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandintegration.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandintegration.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -125,6 +125,9 @@ #endif reconfigureInputContext(); + + QWaylandWindow::fixedToplevelPositions = + !qEnvironmentVariableIsSet("QT_WAYLAND_DISABLE_FIXED_POSITIONS"); } QWaylandIntegration::~QWaylandIntegration() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandprimaryselectionv1.cpp new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandprimaryselectionv1.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandprimaryselectionv1.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandprimaryselectionv1.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -54,11 +54,6 @@ : zwp_primary_selection_device_manager_v1(display->wl_registry(), id, qMin(version, uint(1))) , m_display(display) { - // Create devices for all seats. - // This only works if we get the global before all devices - const auto seats = m_display->inputDevices(); - for (auto *seat : seats) - seat->setPrimarySelectionDevice(createDevice(seat)); } QWaylandPrimarySelectionDeviceV1 *QWaylandPrimarySelectionDeviceManagerV1::createDevice(QWaylandInputDevice *seat) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandscreen.cpp new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandscreen.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandscreen.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandscreen.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -60,7 +60,7 @@ } QWaylandScreen::QWaylandScreen(QWaylandDisplay *waylandDisplay, int version, uint32_t id) - : QtWayland::wl_output(waylandDisplay->wl_registry(), id, qMin(version, 2)) + : QtWayland::wl_output(waylandDisplay->wl_registry(), id, qMin(version, 3)) , m_outputId(id) , mWaylandDisplay(waylandDisplay) , mOutputName(QStringLiteral("Screen%1").arg(id)) @@ -81,6 +81,8 @@ { if (zxdg_output_v1::isInitialized()) zxdg_output_v1::destroy(); + if (wl_output::isInitialized() && wl_output_get_version(wl_output::object()) >= WL_OUTPUT_RELEASE_SINCE_VERSION) + wl_output::release(); } uint QWaylandScreen::requiredEvents() const diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandshmbackingstore.cpp new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandshmbackingstore.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandshmbackingstore.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandshmbackingstore.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -52,6 +52,7 @@ #include <QtWaylandClient/private/wayland-wayland-client-protocol.h> +#include <fcntl.h> #include <unistd.h> #include <sys/mman.h> @@ -61,6 +62,9 @@ # ifndef MFD_CLOEXEC # define MFD_CLOEXEC 0x0001U # endif +# ifndef MFD_ALLOW_SEALING +# define MFD_ALLOW_SEALING 0x0002U +# endif #endif QT_BEGIN_NAMESPACE @@ -74,8 +78,10 @@ int alloc = stride * size.height(); int fd = -1; -#ifdef SYS_memfd_create - fd = syscall(SYS_memfd_create, "wayland-shm", MFD_CLOEXEC); +#if defined(SYS_memfd_create) && defined(F_SEAL_SEAL) + fd = syscall(SYS_memfd_create, "wayland-shm", MFD_CLOEXEC | MFD_ALLOW_SEALING); + if (fd >= 0) + fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL); #endif QScopedPointer<QFile> filePointer; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandwindow.cpp new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandwindow.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandwindow.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandwindow.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -252,13 +252,16 @@ mSurface.reset(); } - if (mFrameCallback) { - wl_callback_destroy(mFrameCallback); - mFrameCallback = nullptr; - } + { + QMutexLocker lock(&mFrameSyncMutex); + if (mFrameCallback) { + wl_callback_destroy(mFrameCallback); + mFrameCallback = nullptr; + } - mFrameCallbackElapsedTimer.invalidate(); - mWaitingForFrameCallback = false; + mFrameCallbackElapsedTimer.invalidate(); + mWaitingForFrameCallback = false; + } mFrameCallbackTimedOut = false; mMask = QRegion(); @@ -350,8 +353,13 @@ } } -void QWaylandWindow::setGeometry(const QRect &rect) +void QWaylandWindow::setGeometry(const QRect &r) { + auto rect = r; + if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup + && window()->type() != Qt::ToolTip) { + rect.moveTo(screen()->geometry().topLeft()); + } setGeometry_helper(rect); if (window()->isVisible() && rect.isValid()) { @@ -628,18 +636,21 @@ [](void *data, wl_callback *callback, uint32_t time) { Q_UNUSED(time); auto *window = static_cast<QWaylandWindow*>(data); - - Q_ASSERT(callback == window->mFrameCallback); - wl_callback_destroy(callback); - window->mFrameCallback = nullptr; - - window->handleFrameCallback(); + window->handleFrameCallback(callback); } }; -void QWaylandWindow::handleFrameCallback() +void QWaylandWindow::handleFrameCallback(wl_callback* callback) { QMutexLocker locker(&mFrameSyncMutex); + if (!mFrameCallback) { + // This means the callback is already unset by QWaylandWindow::reset. + // The wl_callback object will be destroyed there too. + return; + } + Q_ASSERT(callback == mFrameCallback); + wl_callback_destroy(callback); + mFrameCallback = nullptr; mWaitingForFrameCallback = false; mFrameCallbackElapsedTimer.invalidate(); @@ -1033,6 +1044,13 @@ QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen()); mLastReportedScreen = newScreen; + if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup + && window()->type() != Qt::ToolTip + && geometry().topLeft() != newScreen->geometry().topLeft()) { + auto geometry = this->geometry(); + geometry.moveTo(newScreen->geometry().topLeft()); + setGeometry(geometry); + } int scale = newScreen->isPlaceholder() ? 1 : static_cast<QWaylandScreen *>(newScreen)->scale(); if (scale != mScale) { @@ -1157,19 +1175,24 @@ if (event->timerId() != mFrameCallbackCheckIntervalTimerId) return; - bool callbackTimerExpired = mFrameCallbackElapsedTimer.hasExpired(mFrameCallbackTimeout); - if (!mFrameCallbackElapsedTimer.isValid() || callbackTimerExpired ) { - killTimer(mFrameCallbackCheckIntervalTimerId); - mFrameCallbackCheckIntervalTimerId = -1; - } - if (mFrameCallbackElapsedTimer.isValid() && callbackTimerExpired) { - mFrameCallbackElapsedTimer.invalidate(); + { + QMutexLocker lock(&mFrameSyncMutex); - qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed"; - mFrameCallbackTimedOut = true; - mWaitingForUpdate = false; - sendExposeEvent(QRect()); + bool callbackTimerExpired = mFrameCallbackElapsedTimer.hasExpired(mFrameCallbackTimeout); + if (!mFrameCallbackElapsedTimer.isValid() || callbackTimerExpired ) { + killTimer(mFrameCallbackCheckIntervalTimerId); + mFrameCallbackCheckIntervalTimerId = -1; + } + if (!mFrameCallbackElapsedTimer.isValid() || !callbackTimerExpired) { + return; + } + mFrameCallbackElapsedTimer.invalidate(); } + + qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed"; + mFrameCallbackTimedOut = true; + mWaitingForUpdate = false; + sendExposeEvent(QRect()); } void QWaylandWindow::requestUpdate() @@ -1212,15 +1235,14 @@ { qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread(); - if (mWaitingForFrameCallback) - return; - // TODO: Should sync subsurfaces avoid requesting frame callbacks? QReadLocker lock(&mSurfaceLock); if (!mSurface) return; QMutexLocker locker(&mFrameSyncMutex); + if (mWaitingForFrameCallback) + return; struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object())); wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mDisplay->frameEventQueue()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandwindow_p.h new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandwindow_p.h --- old/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandwindow_p.h 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/client/qwaylandwindow_p.h 2023-01-05 07:51:24.000000000 +0100 @@ -98,6 +98,9 @@ QWaylandWindow(QWindow *window, QWaylandDisplay *display); ~QWaylandWindow() override; + // Keep Toplevels position on the top left corner of their screen + static inline bool fixedToplevelPositions = true; + virtual WindowType windowType() const = 0; virtual void ensureSize(); WId winId() const override; @@ -234,12 +237,13 @@ Qt::MouseButtons mMousePressedInContentArea = Qt::NoButton; WId mWindowId; - bool mWaitingForFrameCallback = false; bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out - QAtomicInt mWaitingForUpdateDelivery = false; int mFrameCallbackCheckIntervalTimerId = -1; - QElapsedTimer mFrameCallbackElapsedTimer; - struct ::wl_callback *mFrameCallback = nullptr; + QAtomicInt mWaitingForUpdateDelivery = false; + + bool mWaitingForFrameCallback = false; // Protected by mFrameSyncMutex + QElapsedTimer mFrameCallbackElapsedTimer; // Protected by mFrameSyncMutex + struct ::wl_callback *mFrameCallback = nullptr; // Protected by mFrameSyncMutex QMutex mFrameSyncMutex; QWaitCondition mFrameSyncWait; @@ -294,7 +298,7 @@ QRect mLastExposeGeometry; static const wl_callback_listener callbackListener; - void handleFrameCallback(); + void handleFrameCallback(struct ::wl_callback* callback); static QWaylandWindow *mMouseGrab; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp new/qtwayland-everywhere-src-5.15.8+kde57/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -347,15 +347,16 @@ void QWaylandXdgSurface::applyConfigure() { - Q_ASSERT(m_pendingConfigureSerial != 0); + // It is a redundant ack_configure, so skipped. + if (m_pendingConfigureSerial == m_appliedConfigureSerial) + return; if (m_toplevel) m_toplevel->applyConfigure(); + m_appliedConfigureSerial = m_pendingConfigureSerial; m_configured = true; - ack_configure(m_pendingConfigureSerial); - - m_pendingConfigureSerial = 0; + ack_configure(m_appliedConfigureSerial); } bool QWaylandXdgSurface::wantsDecorations() const @@ -383,10 +384,10 @@ const int minHeight = qMax(0, m_window->windowMinimumSize().height()); m_toplevel->set_min_size(minWidth, minHeight); - int maxWidth = qMax(0, m_window->windowMaximumSize().width()); + int maxWidth = qMax(minWidth, m_window->windowMaximumSize().width()); if (maxWidth == QWINDOWSIZE_MAX) maxWidth = 0; - int maxHeight = qMax(0, m_window->windowMaximumSize().height()); + int maxHeight = qMax(minHeight, m_window->windowMaximumSize().height()); if (maxHeight == QWINDOWSIZE_MAX) maxHeight = 0; m_toplevel->set_max_size(maxWidth, maxHeight); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h new/qtwayland-everywhere-src-5.15.8+kde57/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h --- old/qtwayland-everywhere-src-5.15.7+kde49/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h 2023-01-05 07:51:24.000000000 +0100 @@ -154,6 +154,7 @@ bool m_configured = false; QRegion m_exposeRegion; uint m_pendingConfigureSerial = 0; + uint m_appliedConfigureSerial = 0; friend class QWaylandXdgShell; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.7+kde49/tests/auto/client/seatv4/tst_seatv4.cpp new/qtwayland-everywhere-src-5.15.8+kde57/tests/auto/client/seatv4/tst_seatv4.cpp --- old/qtwayland-everywhere-src-5.15.7+kde49/tests/auto/client/seatv4/tst_seatv4.cpp 2022-10-28 12:26:51.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.8+kde57/tests/auto/client/seatv4/tst_seatv4.cpp 2023-01-05 07:51:24.000000000 +0100 @@ -135,19 +135,19 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); + exec([&] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); } void tst_seatv4::usesEnterSerial() { - QSignalSpy setCursorSpy(exec([=] { return pointer(); }), &Pointer::setCursor); + QSignalSpy setCursorSpy(exec([&] { return pointer(); }), &Pointer::setCursor); QRasterWindow window; window.resize(64, 64); window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - uint enterSerial = exec([=] { + uint enterSerial = exec([&] { return pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); @@ -158,7 +158,7 @@ void tst_seatv4::focusDestruction() { - QSignalSpy setCursorSpy(exec([=] { return pointer(); }), &Pointer::setCursor); + QSignalSpy setCursorSpy(exec([&] { return pointer(); }), &Pointer::setCursor); QRasterWindow window; window.resize(64, 64); window.show(); @@ -166,7 +166,7 @@ // Setting a cursor now is not allowed since there has been no enter event QCOMPARE(setCursorSpy.count(), 0); - uint enterSerial = exec([=] { + uint enterSerial = exec([&] { return pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); @@ -287,8 +287,6 @@ } struct Event // Because I didn't find a convenient way to copy it entirely { - Event() = default; - const QPoint pixelDelta; const QPoint angleDelta; // eights of a degree, positive is upwards, left }; @@ -298,7 +296,7 @@ WheelWindow window; QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { + exec([&] { Surface *surface = xdgSurface()->m_surface; pointer()->sendEnter(surface, {32, 32}); wl_client *client = surface->resource()->client(); @@ -322,7 +320,7 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { + exec([&] { auto *p = pointer(); auto *c = client(); // Purposefully send events without a wl_pointer.enter @@ -355,7 +353,7 @@ { auto *waylandIntegration = static_cast<QtWaylandClient::QWaylandIntegration *>(QGuiApplicationPrivate::platformIntegration()); wl_shm *shm = waylandIntegration->display()->shm()->object(); - return std::all_of(sizes.begin(), sizes.end(), [=](uint size) { + return std::all_of(sizes.begin(), sizes.end(), [&](uint size) { return supportsCursorSize(size, shm); }); } @@ -384,15 +382,15 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); + exec([&] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); QCOMPOSITOR_TRY_VERIFY(cursorSurface()->m_committed.buffer); QCOMPOSITOR_TRY_COMPARE(cursorSurface()->m_committed.bufferScale, 1); - QSize unscaledPixelSize = exec([=] { + QSize unscaledPixelSize = exec([&] { return cursorSurface()->m_committed.buffer->size(); }); - exec([=] { + exec([&] { auto *surface = cursorSurface(); surface->sendEnter(getAll<Output>()[1]); surface->sendLeave(getAll<Output>()[0]); @@ -412,7 +410,7 @@ const int screens = 4; // with scales 1, 2, 4, 8 - exec([=] { + exec([&] { for (int i = 1; i < screens; ++i) { OutputData d; d.scale = int(qPow(2, i)); @@ -425,11 +423,11 @@ window.resize(64, 64); window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); + exec([&] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); QCOMPOSITOR_TRY_VERIFY(cursorSurface()->m_committed.buffer); QCOMPOSITOR_TRY_COMPARE(cursorSurface()->m_committed.bufferScale, 1); - QSize unscaledPixelSize = exec([=] { + QSize unscaledPixelSize = exec([&] { return cursorSurface()->m_committed.buffer->size(); }); @@ -437,7 +435,7 @@ QCOMPARE(unscaledPixelSize.height(), int(defaultSize)); for (int i = 1; i < screens; ++i) { - exec([=] { + exec([&] { auto *surface = cursorSurface(); surface->sendEnter(getAll<Output>()[i]); surface->sendLeave(getAll<Output>()[i-1]); @@ -475,14 +473,14 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); + exec([&] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); QCOMPOSITOR_TRY_VERIFY(cursorSurface()->m_committed.buffer); QCOMPOSITOR_COMPARE(cursorSurface()->m_committed.buffer->size(), QSize(24, 24)); QCOMPOSITOR_COMPARE(cursorSurface()->m_committed.bufferScale, 1); QCOMPOSITOR_COMPARE(pointer()->m_hotspot, QPoint(12, 12)); - exec([=] { + exec([&] { auto *surface = cursorSurface(); surface->sendEnter(getAll<Output>()[1]); surface->sendLeave(getAll<Output>()[0]); @@ -521,14 +519,14 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); + exec([&] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); QCOMPOSITOR_TRY_VERIFY(cursorSurface()->m_committed.buffer); QCOMPOSITOR_COMPARE(cursorSurface()->m_committed.buffer->size(), QSize(48, 48)); QCOMPOSITOR_COMPARE(cursorSurface()->m_committed.bufferScale, 2); QCOMPOSITOR_COMPARE(pointer()->m_hotspot, QPoint(12, 12)); - exec([=] { + exec([&] { auto *surface = cursorSurface(); surface->sendEnter(getAll<Output>()[1]); surface->sendLeave(getAll<Output>()[0]); @@ -558,7 +556,7 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); + exec([&] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); QCOMPOSITOR_TRY_VERIFY(cursorSurface()->m_committed.buffer); QCOMPOSITOR_COMPARE(cursorSurface()->m_committed.buffer->size(), QSize(100, 100)); @@ -576,12 +574,12 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); - exec([=] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); + exec([&] { pointer()->sendEnter(xdgSurface()->m_surface, {32, 32}); }); QCOMPOSITOR_TRY_VERIFY(cursorSurface()); // We should get the first buffer without waiting for a frame callback QCOMPOSITOR_TRY_VERIFY(cursorSurface()->m_committed.buffer); - QSignalSpy bufferSpy(exec([=] { return cursorSurface(); }), &Surface::bufferCommitted); + QSignalSpy bufferSpy(exec([&] { return cursorSurface(); }), &Surface::bufferCommitted); exec([&] { // Make sure no extra buffers have arrived ++++++ qtwayland-everywhere-src.obsinfo ++++++ --- /var/tmp/diff_new_pack.Zk82h6/_old 2023-01-11 14:33:50.236818076 +0100 +++ /var/tmp/diff_new_pack.Zk82h6/_new 2023-01-11 14:33:50.240818099 +0100 @@ -1,5 +1,5 @@ name: qtwayland-everywhere-src -version: 5.15.7+kde49 -mtime: 1666952811 -commit: 9c607c771acdb3d820be7f112db99213a6c6d7eb +version: 5.15.8+kde57 +mtime: 1672901484 +commit: f6a1e838e371dc90272c62daeea597fe487dec3e