diff --git a/0001-Only-resize-plot-texture-if-size-actually-changes.patch b/0001-Only-resize-plot-texture-if-size-actually-changes.patch new file mode 100644 index 0000000..26c781e --- /dev/null +++ b/0001-Only-resize-plot-texture-if-size-actually-changes.patch @@ -0,0 +1,44 @@ +From f399aa8b48db02f809454be5427c0ca01b809882 Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Tue, 7 Jul 2015 11:54:11 +0100 +Subject: [PATCH 1/1] Only resize plot texture if size actually changes + +Test compared rounded QSize with QSizeF, which will be almost always +returning true. + +CCBUG: 348385 +REVIEW: 124280 +--- + src/qmlcontrols/kquickcontrolsaddons/plotter.cpp | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +diff --git a/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp b/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp +index 9a939c3626fc6321a39e898b88e5b69c14b4e1b7..93da3c75e87aa21f6c5356b35764ded03f01d2e7 100644 +--- a/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp ++++ b/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp +@@ -799,16 +799,15 @@ QSGNode *Plotter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updateP + u_matrix = s_program->uniformLocation("matrix"); + } + +- if (n->texture()->textureSize() != boundingRect().size()) { +- //we need a size always equal or smaller, size.toSize() won't do +- static_cast(n->texture())->recreate(QSize(qRound(boundingRect().size().width()), qRound(boundingRect().size().height()))); ++ //we need a size always equal or smaller, size.toSize() won't do ++ const QSize targetTextureSize(qRound(boundingRect().size().width()), qRound(boundingRect().size().height())); ++ if (n->texture()->textureSize() != targetTextureSize) { ++ static_cast(n->texture())->recreate(targetTextureSize); + m_matrix = QMatrix4x4(); +- m_matrix.ortho(0, qRound(width()), 0, qRound(height()), -1, 1); ++ m_matrix.ortho(0, targetTextureSize.width(), 0, targetTextureSize.height(), -1, 1); + } + +- n->setRect(QRect(QPoint(0,0), +- QSize(qRound(boundingRect().size().width()), +- qRound(boundingRect().size().height())))); ++ n->setRect(QRect(QPoint(0,0), targetTextureSize)); + return n; + } + +-- +2.4.5 + diff --git a/kdeclarative.changes b/kdeclarative.changes index 4f1d28e..8a88f03 100644 --- a/kdeclarative.changes +++ b/kdeclarative.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Jul 8 18:58:24 UTC 2015 - hrvoje.senjan@gmail.com + +- Added 0001-Only-resize-plot-texture-if-size-actually-changes.patch + (kde#346134, kde#348385) + ------------------------------------------------------------------- Sun Jul 5 18:44:54 UTC 2015 - hrvoje.senjan@gmail.com diff --git a/kdeclarative.spec b/kdeclarative.spec index 48efc7d..6e4d2d1 100644 --- a/kdeclarative.spec +++ b/kdeclarative.spec @@ -49,6 +49,8 @@ Group: System/GUI/KDE Url: http://www.kde.org Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz Source1: baselibs.conf +# PATCH-FIX-UPSTREAM 0001-Only-resize-plot-texture-if-size-actually-changes.patch +Patch0: 0001-Only-resize-plot-texture-if-size-actually-changes.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -104,6 +106,7 @@ Development files. %lang_package -n %lname %prep %setup -q +%patch0 -p1 %build %cmake_kf5 -d build