Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-ksvg for openSUSE:Factory checked in at 2025-10-12 22:22:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-ksvg (Old) and /work/SRC/openSUSE:Factory/.kf6-ksvg.new.18484 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-ksvg" Sun Oct 12 22:22:41 2025 rev:22 rq:1310872 version:6.19.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-ksvg/kf6-ksvg.changes 2025-09-15 19:53:38.428953216 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-ksvg.new.18484/kf6-ksvg.changes 2025-10-12 22:23:49.500368075 +0200 @@ -1,0 +2,13 @@ +Tue Oct 7 17:06:25 UTC 2025 - Christophe Marin <[email protected]> + +- Update to 6.19.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.19.0 +- Changes since 6.18.0: + * Update dependency version to 6.19.0 + * Use alphaMask for the overlay only when the svg actually has a mask (kde#510157) + * Restrict shared rendering to the main thread + * Update version to 6.19.0 + +------------------------------------------------------------------- Old: ---- ksvg-6.18.0.tar.xz ksvg-6.18.0.tar.xz.sig New: ---- ksvg-6.19.0.tar.xz ksvg-6.19.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-ksvg.spec ++++++ --- /var/tmp/diff_new_pack.q6cMBJ/_old 2025-10-12 22:23:50.392405427 +0200 +++ /var/tmp/diff_new_pack.q6cMBJ/_new 2025-10-12 22:23:50.396405594 +0200 @@ -19,11 +19,11 @@ %define qt6_version 6.8.0 %define rname ksvg -# Full KF6 version (e.g. 6.18.0) +# Full KF6 version (e.g. 6.19.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without released Name: kf6-ksvg -Version: 6.18.0 +Version: 6.19.0 Release: 0 Summary: Components for handling SVGs License: GPL-2.0-or-later ++++++ 0001-Revert-Support-for-fractional-scaling.patch ++++++ --- /var/tmp/diff_new_pack.q6cMBJ/_old 2025-10-12 22:23:50.420406599 +0200 +++ /var/tmp/diff_new_pack.q6cMBJ/_new 2025-10-12 22:23:50.424406767 +0200 @@ -14,10 +14,10 @@ src/ksvg/svg.cpp | 27 ++++--- 7 files changed, 115 insertions(+), 120 deletions(-) -Index: ksvg-6.11.0git.20250811T093804~2c80c729/src/declarativeimports/framesvgitem.cpp +Index: ksvg-6.11.0git.20251003T150812~dc56f395/src/declarativeimports/framesvgitem.cpp =================================================================== ---- ksvg-6.11.0git.20250811T093804~2c80c729.orig/src/declarativeimports/framesvgitem.cpp 2025-08-11 09:38:04.000000000 +0200 -+++ ksvg-6.11.0git.20250811T093804~2c80c729/src/declarativeimports/framesvgitem.cpp 2025-08-12 08:15:29.067807321 +0200 +--- ksvg-6.11.0git.20251003T150812~dc56f395.orig/src/declarativeimports/framesvgitem.cpp 2025-10-03 15:08:12.000000000 +0200 ++++ ksvg-6.11.0git.20251003T150812~dc56f395/src/declarativeimports/framesvgitem.cpp 2025-10-04 08:39:20.427455931 +0200 @@ -122,7 +122,7 @@ void reposition(const QRect &frameGeometry, QSize &fullSize) @@ -48,10 +48,10 @@ if (newDevicePixelRatio != m_frameSvg->devicePixelRatio()) { m_frameSvg->setDevicePixelRatio(newDevicePixelRatio); m_textureChanged = true; -Index: ksvg-6.11.0git.20250811T093804~2c80c729/src/declarativeimports/svgitem.cpp +Index: ksvg-6.11.0git.20251003T150812~dc56f395/src/declarativeimports/svgitem.cpp =================================================================== ---- ksvg-6.11.0git.20250811T093804~2c80c729.orig/src/declarativeimports/svgitem.cpp 2025-08-11 09:38:04.000000000 +0200 -+++ ksvg-6.11.0git.20250811T093804~2c80c729/src/declarativeimports/svgitem.cpp 2025-08-12 08:15:29.067881892 +0200 +--- ksvg-6.11.0git.20251003T150812~dc56f395.orig/src/declarativeimports/svgitem.cpp 2025-10-03 15:08:12.000000000 +0200 ++++ ksvg-6.11.0git.20251003T150812~dc56f395/src/declarativeimports/svgitem.cpp 2025-10-04 08:39:20.427590912 +0200 @@ -16,6 +16,8 @@ #include "managedtexturenode.h" @@ -73,10 +73,10 @@ if (newDevicePixelRatio != m_svg->devicePixelRatio()) { m_svg->setDevicePixelRatio(newDevicePixelRatio); m_textureChanged = true; -Index: ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/framesvg.cpp +Index: ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/framesvg.cpp =================================================================== ---- ksvg-6.11.0git.20250811T093804~2c80c729.orig/src/ksvg/framesvg.cpp 2025-08-11 09:38:04.000000000 +0200 -+++ ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/framesvg.cpp 2025-08-12 08:16:47.526164788 +0200 +--- ksvg-6.11.0git.20251003T150812~dc56f395.orig/src/ksvg/framesvg.cpp 2025-10-03 15:08:12.000000000 +0200 ++++ ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/framesvg.cpp 2025-10-04 08:39:57.309927750 +0200 @@ -15,7 +15,7 @@ #include <QCryptographicHash> #include <QPainter> @@ -86,7 +86,7 @@ #include <QStringBuilder> #include <QTimer> -@@ -196,7 +196,7 @@ +@@ -194,7 +194,7 @@ QSizeF FrameSvg::frameSize() const { if (!d->frame) { @@ -95,7 +95,7 @@ } else { return d->frameSize(d->frame.data()); } -@@ -492,6 +492,9 @@ +@@ -490,6 +490,9 @@ if (maskFrame->cachedBackground.isNull()) { generateBackground(maskFrame); @@ -105,7 +105,7 @@ } return maskFrame->cachedBackground; -@@ -556,8 +559,8 @@ +@@ -554,8 +557,8 @@ } // Overlays @@ -116,7 +116,16 @@ if (overlayAvailable && !overlayCached) { overlaySize = q->elementSize(frame->prefix % QLatin1String("overlay")).toSize(); -@@ -583,13 +586,13 @@ +@@ -582,7 +585,7 @@ + if (q->hasElement(QLatin1String("mask-") % prefix % QLatin1String("center"))) { + overlay = alphaMask(); + } else { +- overlay = QPixmap(overlaySize.toSize()); ++ overlay = QPixmap(overlaySize); + overlay.fill(Qt::white); + } + QPainter overlayPainter(&overlay); +@@ -590,13 +593,13 @@ // Tiling? if (q->hasElement(frame->prefix % QLatin1String("hint-overlay-tile-horizontal")) || q->hasElement(frame->prefix % QLatin1String("hint-overlay-tile-vertical"))) { @@ -133,7 +142,7 @@ } overlayPainter.end(); -@@ -602,14 +605,14 @@ +@@ -609,14 +612,14 @@ if (!overlay.isNull()) { QPainter p(&frame->cachedBackground); p.setCompositionMode(QPainter::CompositionMode_SourceOver); @@ -150,7 +159,7 @@ if (!size.isValid()) { #ifndef NDEBUG -@@ -622,14 +625,13 @@ +@@ -629,14 +632,13 @@ return; } @@ -167,7 +176,7 @@ paintCenter(p, frame, contentRect, size); paintCorner(p, frame, FrameSvg::LeftBorder | FrameSvg::TopBorder, contentRect); -@@ -638,26 +640,25 @@ +@@ -645,26 +647,25 @@ paintCorner(p, frame, FrameSvg::RightBorder | FrameSvg::BottomBorder, contentRect); // Sides @@ -206,7 +215,7 @@ if (frame->enabledBorders & FrameSvg::LeftBorder && q->hasElement(frame->prefix % QLatin1String("left"))) { contentRect.translate(frame->leftWidth * q->devicePixelRatio(), 0); } -@@ -679,7 +680,7 @@ +@@ -686,7 +687,7 @@ const QString oldPath = fd->imagePath; const FrameSvg::EnabledBorders oldBorders = fd->enabledBorders; @@ -215,7 +224,7 @@ const int oldColorSet = fd->colorSet; const auto oldColors = fd->colorOverrides; -@@ -744,28 +745,27 @@ +@@ -751,28 +752,27 @@ } } @@ -250,7 +259,7 @@ } else { q->paint(&p, FrameSvgHelpers::sectionRect(FrameSvg::NoBorder, contentRect, fullSize * q->devicePixelRatio()), centerElementId); } -@@ -774,7 +774,7 @@ +@@ -781,7 +781,7 @@ if (frame->composeOverBorder) { p.setCompositionMode(QPainter::CompositionMode_DestinationIn); @@ -259,7 +268,7 @@ p.setCompositionMode(QPainter::CompositionMode_SourceOver); } } -@@ -782,51 +782,35 @@ +@@ -789,51 +789,35 @@ void FrameSvgPrivate::paintBorder(QPainter &p, const QSharedPointer<FrameData> &frame, const FrameSvg::EnabledBorders borders, @@ -318,7 +327,7 @@ } } -@@ -884,7 +868,7 @@ +@@ -891,7 +875,7 @@ // qCDebug(LOG_KSVG) << "!!!!!!!!!!!!!!!!!!!!!! updating sizes" << prefix; Q_ASSERT(frame); @@ -327,10 +336,10 @@ q->resize(); if (!frame->cachedBackground.isNull()) { frame->cachedBackground = QPixmap(); -Index: ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/private/framesvg_helpers.h +Index: ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/private/framesvg_helpers.h =================================================================== ---- ksvg-6.11.0git.20250811T093804~2c80c729.orig/src/ksvg/private/framesvg_helpers.h 2025-08-11 09:38:04.000000000 +0200 -+++ ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/private/framesvg_helpers.h 2025-08-12 08:15:29.068089004 +0200 +--- ksvg-6.11.0git.20251003T150812~dc56f395.orig/src/ksvg/private/framesvg_helpers.h 2025-10-03 15:08:12.000000000 +0200 ++++ ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/private/framesvg_helpers.h 2025-10-04 08:39:20.427793984 +0200 @@ -45,7 +45,7 @@ /* * Returns the suggested geometry for the borders given a fullSize frame size and a contentRect @@ -377,10 +386,10 @@ } } -Index: ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/private/framesvg_p.h +Index: ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/private/framesvg_p.h =================================================================== ---- ksvg-6.11.0git.20250811T093804~2c80c729.orig/src/ksvg/private/framesvg_p.h 2025-08-11 09:38:04.000000000 +0200 -+++ ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/private/framesvg_p.h 2025-08-12 08:15:29.068123304 +0200 +--- ksvg-6.11.0git.20251003T150812~dc56f395.orig/src/ksvg/private/framesvg_p.h 2025-10-03 15:08:12.000000000 +0200 ++++ ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/private/framesvg_p.h 2025-10-04 08:39:20.427844144 +0200 @@ -80,39 +80,38 @@ static const int MAX_CACHED_MASKS = 10; uint lastModified = 0; @@ -485,11 +494,11 @@ static QHash<ImageSetPrivate *, QHash<uint, QWeakPointer<FrameData>>> s_sharedFrames; -Index: ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/private/svg_p.h +Index: ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/private/svg_p.h =================================================================== ---- ksvg-6.11.0git.20250811T093804~2c80c729.orig/src/ksvg/private/svg_p.h 2025-08-11 09:38:04.000000000 +0200 -+++ ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/private/svg_p.h 2025-08-12 08:15:29.068192265 +0200 -@@ -140,8 +140,8 @@ +--- ksvg-6.11.0git.20251003T150812~dc56f395.orig/src/ksvg/private/svg_p.h 2025-10-03 15:08:12.000000000 +0200 ++++ ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/private/svg_p.h 2025-10-04 08:39:20.427878994 +0200 +@@ -141,8 +141,8 @@ void setNaturalSize(const QString &path, const QSizeF &size); QSizeF naturalSize(const QString &path); @@ -500,7 +509,7 @@ QString iconThemePath(); void setIconThemePath(const QString &path); -@@ -168,7 +168,7 @@ +@@ -169,7 +169,7 @@ */ QHash<size_t, QRectF> m_localRectCache; QHash<QString, QSet<unsigned int>> m_invalidElements; @@ -509,10 +518,10 @@ QHash<QString, unsigned int> m_lastModifiedTimes; }; } -Index: ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/svg.cpp +Index: ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/svg.cpp =================================================================== ---- ksvg-6.11.0git.20250811T093804~2c80c729.orig/src/ksvg/svg.cpp 2025-08-11 09:38:04.000000000 +0200 -+++ ksvg-6.11.0git.20250811T093804~2c80c729/src/ksvg/svg.cpp 2025-08-12 08:15:29.068274376 +0200 +--- ksvg-6.11.0git.20251003T150812~dc56f395.orig/src/ksvg/svg.cpp 2025-10-03 15:08:12.000000000 +0200 ++++ ksvg-6.11.0git.20251003T150812~dc56f395/src/ksvg/svg.cpp 2025-10-04 08:39:20.427937765 +0200 @@ -273,7 +273,7 @@ QMetaObject::invokeMethod(m_configSyncTimer, qOverload<>(&QTimer::start)); } @@ -553,7 +562,7 @@ if (!elementSizeHints.isEmpty()) { QSizeF bestFit(-1, -1); -@@ -878,11 +878,18 @@ +@@ -890,11 +890,18 @@ void Svg::setDevicePixelRatio(qreal ratio) { @@ -573,7 +582,7 @@ Q_EMIT repaintNeeded(); } -@@ -910,7 +917,7 @@ +@@ -922,7 +929,7 @@ void Svg::paint(QPainter *painter, const QPointF &point, const QString &elementID) { Q_ASSERT(painter->device()); @@ -582,7 +591,7 @@ QPixmap pix((elementID.isNull() || d->multipleImages) ? d->findInCache(elementID, ratio, size()) : d->findInCache(elementID, ratio)); if (pix.isNull()) { -@@ -928,16 +935,16 @@ +@@ -940,16 +947,16 @@ void Svg::paint(QPainter *painter, const QRectF &rect, const QString &elementID) { Q_ASSERT(painter->device()); ++++++ ksvg-6.18.0.tar.xz -> ksvg-6.19.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ksvg-6.18.0/CMakeLists.txt new/ksvg-6.19.0/CMakeLists.txt --- old/ksvg-6.18.0/CMakeLists.txt 2025-09-08 10:14:36.000000000 +0200 +++ new/ksvg-6.19.0/CMakeLists.txt 2025-10-05 14:39:10.000000000 +0200 @@ -1,12 +1,12 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "6.18.0") # handled by release scripts -set(KF_DEP_VERSION "6.18.0") # handled by release scripts +set(KF_VERSION "6.19.0") # handled by release scripts +set(KF_DEP_VERSION "6.19.0") # handled by release scripts project(KSvg VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 6.18.0 NO_MODULE) +find_package(ECM 6.19.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -55,7 +55,7 @@ ecm_set_disabled_deprecation_versions( QT 6.10.0 - KF 6.17.0 + KF 6.18.0 ) #add_definitions(-Wno-deprecated) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ksvg-6.18.0/src/ksvg/framesvg.cpp new/ksvg-6.19.0/src/ksvg/framesvg.cpp --- old/ksvg-6.18.0/src/ksvg/framesvg.cpp 2025-09-08 10:14:36.000000000 +0200 +++ new/ksvg-6.19.0/src/ksvg/framesvg.cpp 2025-10-05 14:39:10.000000000 +0200 @@ -575,7 +575,16 @@ } } - overlay = alphaMask(); + // Only search for alphaMask if we actually have a mask element, because + // alphamask will fallback using the background image itself as mask, which + // can call generateBackground(), leading to an infinite recursion + // see BUG:510157 + if (q->hasElement(QLatin1String("mask-") % prefix % QLatin1String("center"))) { + overlay = alphaMask(); + } else { + overlay = QPixmap(overlaySize.toSize()); + overlay.fill(Qt::white); + } QPainter overlayPainter(&overlay); overlayPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); // Tiling? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ksvg-6.18.0/src/ksvg/private/imageset_p.cpp new/ksvg-6.19.0/src/ksvg/private/imageset_p.cpp --- old/ksvg-6.18.0/src/ksvg/private/imageset_p.cpp 2025-09-08 10:14:36.000000000 +0200 +++ new/ksvg-6.19.0/src/ksvg/private/imageset_p.cpp 2025-10-05 14:39:10.000000000 +0200 @@ -9,7 +9,6 @@ #include "debug_p.h" #include "framesvg.h" #include "framesvg_p.h" -#include "imageset.h" #include "svg_p.h" #include <QDir> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ksvg-6.18.0/src/ksvg/svg.cpp new/ksvg-6.19.0/src/ksvg/svg.cpp --- old/ksvg-6.18.0/src/ksvg/svg.cpp 2025-09-08 10:14:36.000000000 +0200 +++ new/ksvg-6.19.0/src/ksvg/svg.cpp 2025-10-05 14:39:10.000000000 +0200 @@ -661,6 +661,10 @@ styleCrc = qChecksum(QByteArrayView(styleSheet.toUtf8().constData(), styleSheet.size())); + // If the KSVG lives on the main thread (the majority case) share a renderer + // For other uses we should not as QSvgRenderer is not thread safe. + // We cannot compare the current thread as this might be hit from the render thread in updatePaintNode for KSVG objects living on the main thread + if (q->thread() == qGuiApp->thread()) { std::shared_lock lock(s_renderersLock); QHash<QString, SharedSvgRenderer::Ptr>::const_iterator it = s_renderers.constFind(styleCrc + path);
