1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
From 3aaf34b677ad3841d6e0f541399b866e23f30b61 Mon Sep 17 00:00:00 2001
From: Luna Lovecraft <ciubix8514@gmail.com>
Date: Thu, 10 Sep 2026 22:18:13 +0400
Subject: [PATCH] Fix a crash in the color space browser on qt 6.11
Some of the color space data includes a few NaNs, which when transformed
it leads to insane values, which makes the qpainter crash in the newer
qt version.
So now there are a few NaN checks to avoid that.
---
libs/ui/widgets/kis_cie_tongue_widget.cpp | 24 +++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/libs/ui/widgets/kis_cie_tongue_widget.cpp b/libs/ui/widgets/kis_cie_tongue_widget.cpp
index f83066bea85..e7fb6a835e1 100644
--- a/libs/ui/widgets/kis_cie_tongue_widget.cpp
+++ b/libs/ui/widgets/kis_cie_tongue_widget.cpp
@@ -178,6 +178,12 @@ void KisCIETongueWidget::setProfileData(QVector <double> p, QVector <double> w,
d->profileDataAvailable = profileData;
if (profileData){
d->Primaries= p;
+
+ for (int i = 0; i < d->Primaries.size(); i++) {
+ if (std::isnan(d->Primaries[i])) {
+ d->Primaries[i] = 0;
+ }
+ }
d->whitePoint = w;
d->needUpdatePixmap = true;
@@ -193,7 +199,13 @@ void KisCIETongueWidget::setRGBData(QVector <double> whitepoint, QVector <double
{
if (colorants.size()==9){
d->Primaries= colorants;
-
+
+ for (int i = 0; i < d->Primaries.size(); i++) {
+ if (std::isnan(d->Primaries[i])) {
+ d->Primaries[i] = 0;
+ }
+ }
+
d->whitePoint = whitepoint;
d->needUpdatePixmap = true;
d->colorModel = KisCIETongueWidget::RGBA;
@@ -543,14 +555,14 @@ void KisCIETongueWidget::drawGamut()
gamutPaint.drawPath(path);
gamutPaint.setOpacity(1.0);
foreach (QPointF Point, d->gamut) {
+ if (std::isnan(Point.x()) || std::isnan(Point.y())) {
+ continue;
+ }
mapPoint(x, y, Point);
- gamutPaint.drawEllipse(x + d->xBias- 2, y-2, 4, 4);
- //Point.setX(x);
- //Point.setY(y);
- //path.lineTo(Point);
+ gamutPaint.drawEllipse(x + d->xBias - 2, y - 2, 4, 4);
}
}
-
+
gamutPaint.end();
d->painter.save();
d->painter.setOpacity(0.5);
--
GitLab
|