summaryrefslogtreecommitdiff
path: root/kde-frameworks/kdeclarative
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2019-04-28 09:54:45 +0100
committerV3n3RiX <venerix@redcorelinux.org>2019-04-28 09:54:45 +0100
commitb7ebc951da8800f711142f69d9d958bde67a112d (patch)
treee318514216845acb8f2e49fff7a5cba4027e9d91 /kde-frameworks/kdeclarative
parentdc7cbdfa65fd814b3b9aa3c56257da201109e807 (diff)
gentoo resync : 28.04.2019
Diffstat (limited to 'kde-frameworks/kdeclarative')
-rw-r--r--kde-frameworks/kdeclarative/Manifest5
-rw-r--r--kde-frameworks/kdeclarative/files/kdeclarative-5.57.0-fix-plotter-crash.patch262
-rw-r--r--kde-frameworks/kdeclarative/kdeclarative-5.57.0-r1.ebuild (renamed from kde-frameworks/kdeclarative/kdeclarative-5.56.0.ebuild)2
3 files changed, 267 insertions, 2 deletions
diff --git a/kde-frameworks/kdeclarative/Manifest b/kde-frameworks/kdeclarative/Manifest
index 23b3b2eed7e9..4e61406cac16 100644
--- a/kde-frameworks/kdeclarative/Manifest
+++ b/kde-frameworks/kdeclarative/Manifest
@@ -1,5 +1,6 @@
+AUX kdeclarative-5.57.0-fix-plotter-crash.patch 8674 BLAKE2B e260ae732380833519007bd379cf7d527d494959c3abcb1e88d9ec1f62899a26d2bf20dc995403d77adcce58b7da3bda5b9be7fa16c06c98b116c999b8674594 SHA512 da30f3f6a9cca0ffd2e737820633e29919761ce6631f25e12d39d2cee100f9a4d012f10767504bddde34fa390f8ee881e9dc052f15e4bf3b6f6cfb74ff763759
DIST kdeclarative-5.54.0.tar.xz 172492 BLAKE2B 44afad1dee9e13c768de24ee10640a9333246818685c2106aeb0917cb3af4c105acc643ddb12e42ffba4906fb0aba1933962fddbe20df2569f089c4ec830d1eb SHA512 57a042a3c9be486b9582f133a0d6688758d1ae2dd4079168d3830cbd6b2d656b22d7b1fa321f77c1d14e216e2714984303db943df623b71d29c87d7c410871c2
-DIST kdeclarative-5.56.0.tar.xz 173440 BLAKE2B 1740bdf8e858a62cc756528c31be2a34aaf46d8e683593c479d77c0289abc93f408386976c76044bf876face1af032e3871375b26d54cc439982491a58e7fb34 SHA512 4bd565e319f467ab594521823f0f024452da78d214a9b768d6338dbf99bb25508576c06b3bdf02888d0f2f05f8691e43e26d1d24d904a9fc97b7e5bcf16fc47c
+DIST kdeclarative-5.57.0.tar.xz 173752 BLAKE2B 49d2d600004472634e979d24caee79b456fafaea0c18550145a8b7d25b619f56e4eaf4a447f5eee435627cef23f67fe5cfc45ff56d2cf67c7df2b681b744638d SHA512 90e5fd9474a85b8d723cf33b5c5db443837710a6f40fa12f57e1cfe87733986b9ca9c2accfa7e254acf081ee69d5b3126b3f67b531024225172d737ef1c7df07
EBUILD kdeclarative-5.54.0.ebuild 761 BLAKE2B f5937ec9b159cd29731d437fd21068f34c2885041794a2b8b0635dd5df256556502422881611815f34bd0bee70dd8a16733c7e24f37cad1dd636bd588ced07c9 SHA512 d6a56de977238533c71160740bbc1676332ff3d193e5e5a2f5eb80166c53e419f3fdf760e06b481a7eeab499817b8a6029528f0bb2f507bfba352977a41e9f67
-EBUILD kdeclarative-5.56.0.ebuild 763 BLAKE2B 6f7823c3200a4db84b3472fdc8eaea552dc3fd200fe9580c792aa44f816a302d97e84e8a434041a32bf665f0004c279d99ddad5514c76f79fd0ebbb23bf14e31 SHA512 93e64ef6a925fe9c6afcb2875ed26391f39c10547f2d6ff2f3fbe7e8fd88ece65847b7b52a8215988b740ee6df95bc2990e9c9a23add17e8fd83b4abc1b63d58
+EBUILD kdeclarative-5.57.0-r1.ebuild 819 BLAKE2B 096c1e739c647e0c19390be0f94255d81d8a5744f8e915b4bd279fd7cab92364fe55dbc1cf0c8933458010bdee43de8b94efd03f1da15e8c3971cf4cf601c5a1 SHA512 6d390eb6a856ee52026b0d064c5c01b20bec2938fb3d38016e375060da0b9f41ebaf3af552c048ef377d8bb1f106dba4e4179c6104e69dbeca09d0e97c4d540f
MISC metadata.xml 249 BLAKE2B ad415db89e5dee1627aa77f44ded9d4e1e5b8217d06c7ca25bbaa3fe92ce67c2b1090957c45a821b407d7927e5af798498aa6a5b903895ee1af8ee20a446c7f7 SHA512 76a5a340b13f0053ca3c5e94ed24380ea8d29b45ac8655419e22eaadb1e4a827c04d2e7e36b65145c4964e6526f656618fc6ac144e277ef53cb7373e6239e3c3
diff --git a/kde-frameworks/kdeclarative/files/kdeclarative-5.57.0-fix-plotter-crash.patch b/kde-frameworks/kdeclarative/files/kdeclarative-5.57.0-fix-plotter-crash.patch
new file mode 100644
index 000000000000..141651095130
--- /dev/null
+++ b/kde-frameworks/kdeclarative/files/kdeclarative-5.57.0-fix-plotter-crash.patch
@@ -0,0 +1,262 @@
+From 0aab7d23a2ce155c4beb5cf77fcac02c93b183b7 Mon Sep 17 00:00:00 2001
+From: David Edmundson <kde@davidedmundson.co.uk>
+Date: Thu, 18 Apr 2019 11:15:06 +0100
+Subject: Plotter: Scope GL Program to lifespan of scenegraph node
+
+Summary:
+Currently the QOpenGLProgram was static. This works when you only have
+one OpenGL context that is never invalidated.
+
+Instead we shoul have a new program created for each context. There is
+no benefit of being static when we can use the cached shader loading.
+
+As we need a program per context, we would need to handle windowChanged
+and sceneGraphInvalidated manually. Instead we can scope the program to
+the QSGNode which will be deleted and recreated on the render thread
+automatically by the scene graph backend.
+
+We can also drop ManagedTextureNode and use
+QSGSimpleTextureNode::setOwnsTexture which does the same thing.
+
+BUG: 403453
+
+Test Plan:
+Created a CPU load viewer on my panel
+Dragged it to my desktop
+Previously that didn't render anything
+Now it does
+
+It should fix the crashes that we
+see on window moves and handling sceneGraphInvalidated
+
+Reviewers: #plasma
+
+Subscribers: kde-frameworks-devel
+
+Tags: #frameworks
+
+Differential Revision: https://phabricator.kde.org/D20656
+---
+ src/qmlcontrols/kquickcontrolsaddons/plotter.cpp | 106 ++++++++++++++---------
+ src/qmlcontrols/kquickcontrolsaddons/plotter.h | 11 +--
+ 2 files changed, 68 insertions(+), 49 deletions(-)
+
+diff --git a/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp b/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp
+index 650151d..8495bbd 100644
+--- a/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp
++++ b/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp
+@@ -44,8 +44,6 @@
+
+ #include <QDebug>
+
+-#include <QuickAddons/ManagedTextureNode>
+-
+ #include <math.h>
+
+ //completely arbitrary
+@@ -262,16 +260,58 @@ void PlotTexture::recreate(const QSize &size)
+ m_size = size;
+ }
+
++class PlotSGNode: public QSGSimpleTextureNode
++{
++public:
++ PlotSGNode();
++ void bind() {
++ m_program->bind();
++ }
++ void setMatrix(const QMatrix4x4 &matrix) {
++ m_program->setUniformValue(u_matrix, matrix);
++ }
++ void setColor1(const QColor &color) {
++ m_program->setUniformValue(u_color1, color);
++ }
++ void setColor2(const QColor &color) {
++ m_program->setUniformValue(u_color2, color);
++ }
++ void setYMin(float min) {
++ m_program->setUniformValue(u_yMin, min);
++ }
++ void setYMax(float max) {
++ m_program->setUniformValue(u_yMax, max);
++ }
++ ~PlotSGNode() = default;
++private:
++ QScopedPointer<QOpenGLShaderProgram> m_program;
++ int u_matrix;
++ int u_color1;
++ int u_color2;
++ int u_yMin;
++ int u_yMax;
+
++};
++
++PlotSGNode::PlotSGNode():
++ m_program(new QOpenGLShaderProgram)
++{
++ setOwnsTexture(true);
++ m_program->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, vs_source);
++ m_program->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, fs_source);
++ m_program->bindAttributeLocation("vertex", 0);
++ m_program->link();
++
++ u_yMin = m_program->uniformLocation("yMin");
++ u_yMax = m_program->uniformLocation("yMax");
++ u_color1 = m_program->uniformLocation("color1");
++ u_color2 = m_program->uniformLocation("color2");
++ u_matrix = m_program->uniformLocation("matrix");
++}
+
+-// ----------------------
+
+-QOpenGLShaderProgram *Plotter::s_program = nullptr;
+-int Plotter::u_matrix;
+-int Plotter::u_color1;
+-int Plotter::u_color2;
+-int Plotter::u_yMin;
+-int Plotter::u_yMax;
++
++// ----------------------
+
+ Plotter::Plotter(QQuickItem *parent)
+ : QQuickItem(parent),
+@@ -652,18 +692,18 @@ void Plotter::render()
+ glEnableVertexAttribArray(0);
+
+ // Bind the shader program
+- s_program->bind();
+- s_program->setUniformValue(u_matrix, m_matrix);
++ m_node->bind();
++ m_node->setMatrix(m_matrix);
+
+ // Draw the lines
+ QColor color1 = m_gridColor;
+ QColor color2 = m_gridColor;
+ color1.setAlphaF(0.10);
+ color2.setAlphaF(0.40);
+- s_program->setUniformValue(u_yMin, (float) 0.0);
+- s_program->setUniformValue(u_yMax, (float) height());
+- s_program->setUniformValue(u_color1, color1);
+- s_program->setUniformValue(u_color2, color2);
++ m_node->setYMin((float) 0.0);
++ m_node->setYMax((float) height());
++ m_node->setColor1(color1);
++ m_node->setColor2(color2);
+
+ glDrawArrays(GL_LINES, 0, (m_horizontalLineCount+1) * 2 );
+
+@@ -677,18 +717,18 @@ void Plotter::render()
+ color2 = data->color();
+ color2.setAlphaF(0.60);
+ // Draw the graph
+- s_program->setUniformValue(u_yMin, min);
+- s_program->setUniformValue(u_yMax, max);
+- s_program->setUniformValue(u_color1, data->color());
+- s_program->setUniformValue(u_color2, color2);
++ m_node->setYMin(min);
++ m_node->setYMax(max);
++ m_node->setColor1(data->color());
++ m_node->setColor2(color2);
+
+ //+2 is for the bottom line
+ glDrawArrays(GL_TRIANGLE_STRIP, m_horizontalLineCount*2 + 2 + oldCount.first + oldCount.second, verticesCounts[data].first);
+
+ oldCount.first += verticesCounts[data].first;
+
+- s_program->setUniformValue(u_color1, data->color());
+- s_program->setUniformValue(u_color2, data->color());
++ m_node->setColor1(data->color());
++ m_node->setColor2(data->color());
+ glDrawArrays(GL_LINE_STRIP, m_horizontalLineCount*2 + 2 + oldCount.first + oldCount.second, verticesCounts[data].second);
+
+ oldCount.second += verticesCounts[data].second;
+@@ -697,8 +737,8 @@ void Plotter::render()
+
+ glDisable(GL_BLEND);
+
+- s_program->setUniformValue(u_color1, m_gridColor);
+- s_program->setUniformValue(u_color2, m_gridColor);
++ m_node->setColor1(m_gridColor);
++ m_node->setColor2(m_gridColor);
+ glDrawArrays(GL_LINES, vertices.count()-2, 2);
+
+ if (m_haveMSAA && m_haveFramebufferBlit) {
+@@ -723,7 +763,7 @@ QSGNode *Plotter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updateP
+ return nullptr;
+ }
+
+- ManagedTextureNode *n = static_cast<ManagedTextureNode *>(oldNode);
++ PlotSGNode *n = static_cast<PlotSGNode *>(oldNode);
+
+ if (width() == 0 && height() == 0) {
+ delete oldNode;
+@@ -731,8 +771,8 @@ QSGNode *Plotter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updateP
+ }
+
+ if (!n) {
+- n = new ManagedTextureNode();
+- n->setTexture(QSharedPointer<QSGTexture>(new PlotTexture(window()->openglContext())));
++ n = new PlotSGNode();
++ n->setTexture(new PlotTexture(window()->openglContext()));
+ n->setFiltering(QSGTexture::Linear);
+
+ m_node = n;
+@@ -786,20 +826,6 @@ QSGNode *Plotter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updateP
+ m_initialized = true;
+ }
+
+- if (!s_program) {
+- s_program = new QOpenGLShaderProgram;
+- s_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vs_source);
+- s_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fs_source);
+- s_program->bindAttributeLocation("vertex", 0);
+- s_program->link();
+-
+- u_yMin = s_program->uniformLocation("yMin");
+- u_yMax = s_program->uniformLocation("yMax");
+- u_color1 = s_program->uniformLocation("color1");
+- u_color2 = s_program->uniformLocation("color2");
+- u_matrix = s_program->uniformLocation("matrix");
+- }
+-
+ //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) {
+diff --git a/src/qmlcontrols/kquickcontrolsaddons/plotter.h b/src/qmlcontrols/kquickcontrolsaddons/plotter.h
+index 01c0ef2..11ae233 100644
+--- a/src/qmlcontrols/kquickcontrolsaddons/plotter.h
++++ b/src/qmlcontrols/kquickcontrolsaddons/plotter.h
+@@ -47,7 +47,7 @@
+ #include <QQuickWindow>
+ #include <QMutex>
+
+-class ManagedTextureNode;
++class PlotSGNode;
+
+ /**
+ * a Plotter can draw a graph of values arriving from an arbitrary number of data sources
+@@ -242,7 +242,7 @@ private:
+ QList<PlotData *> m_plotData;
+
+ GLuint m_fbo = 0;
+- ManagedTextureNode *m_node = nullptr;
++ PlotSGNode *m_node = nullptr;
+ qreal m_min;
+ qreal m_max;
+ qreal m_rangeMax;
+@@ -262,13 +262,6 @@ private:
+ int m_samples;
+ QPointer <QQuickWindow> m_window;
+ QMutex m_mutex;
+-
+- static QOpenGLShaderProgram *s_program;
+- static int u_matrix;
+- static int u_color1;
+- static int u_color2;
+- static int u_yMin;
+- static int u_yMax;
+ };
+
+ #endif
+--
+cgit v1.1
diff --git a/kde-frameworks/kdeclarative/kdeclarative-5.56.0.ebuild b/kde-frameworks/kdeclarative/kdeclarative-5.57.0-r1.ebuild
index 5633863dfd62..823e38edc29f 100644
--- a/kde-frameworks/kdeclarative/kdeclarative-5.56.0.ebuild
+++ b/kde-frameworks/kdeclarative/kdeclarative-5.57.0-r1.ebuild
@@ -29,3 +29,5 @@ DEPEND="
media-libs/libepoxy
"
RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-fix-plotter-crash.patch" )