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 2022-11-04 17:32:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqt5-qtwayland (Old) and /work/SRC/openSUSE:Factory/.libqt5-qtwayland.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtwayland" Fri Nov 4 17:32:07 2022 rev:47 rq:1033121 version:5.15.7+kde49 Changes: -------- --- /work/SRC/openSUSE:Factory/libqt5-qtwayland/libqt5-qtwayland.changes 2022-09-27 20:10:18.785348309 +0200 +++ /work/SRC/openSUSE:Factory/.libqt5-qtwayland.new.2275/libqt5-qtwayland.changes 2022-11-04 17:32:47.672129228 +0100 @@ -1,0 +2,9 @@ +Thu Nov 3 08:57:16 UTC 2022 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to version 5.15.7+kde49, rebased upstream: + * Hold surface read lock throughout QWaylandEglWindow::updateSurface + * Keep reference to buffer until it has been replaced + * Implement wp_viewporter support for video buffer formats + * Ignore viewporter buffer size when buffer is null + +------------------------------------------------------------------- Old: ---- qtwayland-everywhere-src-5.15.6+kde49.obscpio New: ---- qtwayland-everywhere-src-5.15.7+kde49.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqt5-qtwayland.spec ++++++ --- /var/tmp/diff_new_pack.0o1MB5/_old 2022-11-04 17:32:48.836135491 +0100 +++ /var/tmp/diff_new_pack.0o1MB5/_new 2022-11-04 17:32:48.852135577 +0100 @@ -22,11 +22,11 @@ %define qt5_snapshot 1 %define libname libQt5WaylandCompositor5 %define base_name libqt5 -%define real_version 5.15.6 -%define so_version 5.15.6 +%define real_version 5.15.7 +%define so_version 5.15.7 %define tar_version qtwayland-everywhere-src-%{version} Name: libqt5-qtwayland -Version: 5.15.6+kde49 +Version: 5.15.7+kde49 Release: 0 Summary: Qt 5 Wayland Addon # The wayland compositor files are GPL-3.0-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.0o1MB5/_old 2022-11-04 17:32:48.948136094 +0100 +++ /var/tmp/diff_new_pack.0o1MB5/_new 2022-11-04 17:32:48.968136201 +0100 @@ -1,12 +1,12 @@ <services> <service name="obs_scm" mode="disabled"> <param name="changesgenerate">enable</param> - <param name="versionformat">5.15.6+kde@TAG_OFFSET@</param> + <param name="versionformat">5.15.7+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.6-lts-lgpl</param> + <param name="parent-tag">v5.15.7-lts-lgpl</param> <param name="changesgenerate">enable</param> </service> <service name="set_version" mode="disabled"/> ++++++ qtwayland-everywhere-src-5.15.6+kde49.obscpio -> qtwayland-everywhere-src-5.15.7+kde49.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.6+kde49/.qmake.conf new/qtwayland-everywhere-src-5.15.7+kde49/.qmake.conf --- old/qtwayland-everywhere-src-5.15.6+kde49/.qmake.conf 2022-09-22 13:58:55.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.7+kde49/.qmake.conf 2022-10-28 12:26:51.000000000 +0200 @@ -4,4 +4,4 @@ DEFINES += QT_NO_JAVA_STYLE_ITERATORS DEFINES += QT_NO_LINKED_LIST -MODULE_VERSION = 5.15.6 +MODULE_VERSION = 5.15.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.6+kde49/src/client/qwaylandwindow_p.h new/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandwindow_p.h --- old/qtwayland-everywhere-src-5.15.6+kde49/src/client/qwaylandwindow_p.h 2022-09-22 13:58:55.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.7+kde49/src/client/qwaylandwindow_p.h 2022-10-28 12:26:51.000000000 +0200 @@ -220,7 +220,11 @@ protected: QWaylandDisplay *mDisplay = nullptr; + + // mSurface can be written by the main thread. Other threads should claim a read lock for access + mutable QReadWriteLock mSurfaceLock; QScopedPointer<QWaylandSurface> mSurface; + QWaylandShellSurface *mShellSurface = nullptr; QWaylandSubSurface *mSubSurfaceWindow = nullptr; QVector<QWaylandSubSurface *> mChildren; @@ -294,8 +298,6 @@ static QWaylandWindow *mMouseGrab; - mutable QReadWriteLock mSurfaceLock; - friend class QWaylandSubSurface; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.6+kde49/src/compositor/compositor_api/qwaylandquickitem.cpp new/qtwayland-everywhere-src-5.15.7+kde49/src/compositor/compositor_api/qwaylandquickitem.cpp --- old/qtwayland-everywhere-src-5.15.6+kde49/src/compositor/compositor_api/qwaylandquickitem.cpp 2022-09-22 13:58:55.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.7+kde49/src/compositor/compositor_api/qwaylandquickitem.cpp 2022-10-28 12:26:51.000000000 +0200 @@ -253,6 +253,16 @@ m_textures << nullptr; } } + +void QWaylandBufferMaterial::setBufferRef(QWaylandQuickItem *surfaceItem, const QWaylandBufferRef &ref) +{ + Q_UNUSED(surfaceItem); + m_bufferRef = ref; + for (int plane = 0; plane < bufferTypes[ref.bufferFormatEgl()].planeCount; plane++) + if (auto texture = ref.toOpenGLTexture(plane)) + setTextureForPlane(plane, texture); + bind(); +} #endif // QT_CONFIG(opengl) QMutex *QWaylandQuickItemPrivate::mutex = nullptr; @@ -1411,13 +1421,20 @@ if (d->newTexture) { d->newTexture = false; - for (int plane = 0; plane < bufferTypes[ref.bufferFormatEgl()].planeCount; plane++) - if (auto texture = ref.toOpenGLTexture(plane)) - material->setTextureForPlane(plane, texture); - material->bind(); + material->setBufferRef(this, ref); } - QSGGeometry::updateTexturedRectGeometry(geometry, rect, QRectF(0, 0, 1, 1)); + const QSize surfaceSize = ref.size() / surface()->bufferScale(); + const QRectF sourceGeometry = surface()->sourceGeometry(); + const QRectF normalizedCoordinates = + sourceGeometry.isValid() + ? QRectF(sourceGeometry.x() / surfaceSize.width(), + sourceGeometry.y() / surfaceSize.height(), + sourceGeometry.width() / surfaceSize.width(), + sourceGeometry.height() / surfaceSize.height()) + : QRectF(0, 0, 1, 1); + + QSGGeometry::updateTexturedRectGeometry(geometry, rect, normalizedCoordinates); node->setGeometry(geometry); node->setFlag(QSGNode::OwnsGeometry, true); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.6+kde49/src/compositor/compositor_api/qwaylandquickitem_p.h new/qtwayland-everywhere-src-5.15.7+kde49/src/compositor/compositor_api/qwaylandquickitem_p.h --- old/qtwayland-everywhere-src-5.15.6+kde49/src/compositor/compositor_api/qwaylandquickitem_p.h 2022-09-22 13:58:55.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.7+kde49/src/compositor/compositor_api/qwaylandquickitem_p.h 2022-10-28 12:26:51.000000000 +0200 @@ -80,6 +80,7 @@ ~QWaylandBufferMaterial() override; void setTextureForPlane(int plane, QOpenGLTexture *texture); + void setBufferRef(QWaylandQuickItem *surfaceItem, const QWaylandBufferRef &ref); void bind(); @@ -92,6 +93,7 @@ const QWaylandBufferRef::BufferFormatEgl m_format; QVarLengthArray<QOpenGLTexture*, 3> m_textures; + QWaylandBufferRef m_bufferRef; }; #endif // QT_CONFIG(opengl) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.6+kde49/src/compositor/extensions/qwaylandviewporter.cpp new/qtwayland-everywhere-src-5.15.7+kde49/src/compositor/extensions/qwaylandviewporter.cpp --- old/qtwayland-everywhere-src-5.15.6+kde49/src/compositor/extensions/qwaylandviewporter.cpp 2022-09-22 13:58:55.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.7+kde49/src/compositor/extensions/qwaylandviewporter.cpp 2022-10-28 12:26:51.000000000 +0200 @@ -149,14 +149,16 @@ return; } - QRectF max = QRectF(QPointF(), m_surface->bufferSize() / m_surface->bufferScale()); - // We can't use QRectF.contains, because that would return false for values on the border - if (max.united(source) != max) { - wl_resource_post_error(resource()->handle, error_out_of_buffer, - "source %f,%f, %fx%f extends outside attached buffer %fx%f", - source.x(), source.y(), source.width(), source.height(), - max.width(), max.height()); - return; + if (m_surface->bufferSize().isValid()) { + QRectF max = QRectF(QPointF(), m_surface->bufferSize() / m_surface->bufferScale()); + // We can't use QRectF.contains, because that would return false for values on the border + if (max.united(source) != max) { + wl_resource_post_error(resource()->handle, error_out_of_buffer, + "source %f,%f, %fx%f extends outside attached buffer %fx%f", + source.x(), source.y(), source.width(), source.height(), + max.width(), max.height()); + return; + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtwayland-everywhere-src-5.15.6+kde49/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp new/qtwayland-everywhere-src-5.15.7+kde49/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp --- old/qtwayland-everywhere-src-5.15.6+kde49/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp 2022-09-22 13:58:55.000000000 +0200 +++ new/qtwayland-everywhere-src-5.15.7+kde49/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp 2022-10-28 12:26:51.000000000 +0200 @@ -40,6 +40,7 @@ #include "qwaylandeglwindow.h" #include <QtWaylandClient/private/qwaylandscreen_p.h> +#include <QtWaylandClient/private/qwaylandsurface_p.h> #include "qwaylandglcontext.h" #include <QtEglSupport/private/qeglconvenience_p.h> @@ -124,6 +125,7 @@ } mOffset = QPoint(); } else { + QReadLocker locker(&mSurfaceLock); if (m_waylandEglWindow) { int current_width, current_height; static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt(); @@ -138,8 +140,8 @@ m_resize = true; } - } else if (create && wlSurface()) { - m_waylandEglWindow = wl_egl_window_create(wlSurface(), sizeWithMargins.width(), sizeWithMargins.height()); + } else if (create && mSurface) { + m_waylandEglWindow = wl_egl_window_create(mSurface->object(), sizeWithMargins.width(), sizeWithMargins.height()); m_requestedSize = sizeWithMargins; } ++++++ qtwayland-everywhere-src.obsinfo ++++++ --- /var/tmp/diff_new_pack.0o1MB5/_old 2022-11-04 17:32:49.884141130 +0100 +++ /var/tmp/diff_new_pack.0o1MB5/_new 2022-11-04 17:32:49.924141345 +0100 @@ -1,5 +1,5 @@ name: qtwayland-everywhere-src -version: 5.15.6+kde49 -mtime: 1663847935 -commit: 31241d7fb6a7ffb8f56bc8ac35ed9f3bc61735b5 +version: 5.15.7+kde49 +mtime: 1666952811 +commit: 9c607c771acdb3d820be7f112db99213a6c6d7eb