forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-qt/qtgui: Fix wrong to linear conversion
QTBUG: https://bugreports.qt.io/browse/QTBUG-109169 Signed-off-by: Andreas Sturmlechner <[email protected]>
- Loading branch information
Showing
2 changed files
with
233 additions
and
0 deletions.
There are no files selected for viewing
47 changes: 47 additions & 0 deletions
47
dev-qt/qtgui/files/qtgui-5.15.7-fix-wrong-to-linear-conversion.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
From a9e67318e6a8924c4b5461656bcc6a80720ae899 Mon Sep 17 00:00:00 2001 | ||
From: Allan Sandfeld Jensen <[email protected]> | ||
Date: Tue, 6 Dec 2022 10:42:59 +0100 | ||
Subject: [PATCH] Fix wrong to linear conversion | ||
|
||
Causing bad rendering of gamma corrected text on non-standard image | ||
format paint devices. | ||
|
||
Pick-to: 6.4 6.2 5.15 | ||
Fixes: QTBUG-109169 | ||
Change-Id: I6d95e9a42b9ccac609071123dd4535d25e225a29 | ||
Reviewed-by: Fabian Vogt <[email protected]> | ||
Reviewed-by: Eirik Aavitsland <[email protected]> | ||
(cherry picked from commit a09c33e1f7b5999a16bce9dd23ef8ca33d519210) | ||
--- | ||
src/gui/painting/qcolortrclut_p.h | 1 + | ||
src/gui/painting/qdrawhelper.cpp | 2 +- | ||
2 files changed, 2 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/src/gui/painting/qcolortrclut_p.h b/src/gui/painting/qcolortrclut_p.h | ||
index 76a6a60803..24fd522e6c 100644 | ||
--- a/src/gui/painting/qcolortrclut_p.h | ||
+++ b/src/gui/painting/qcolortrclut_p.h | ||
@@ -118,6 +118,7 @@ public: | ||
return QRgba64::fromRgba64(r, g, b, qAlpha(rgb32) * 257); | ||
#endif | ||
} | ||
+ QRgba64 toLinear64(QRgba64) const = delete; | ||
|
||
QRgb toLinear(QRgb rgb32) const | ||
{ | ||
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp | ||
index a61793508a..5ba2d277b7 100644 | ||
--- a/src/gui/painting/qdrawhelper.cpp | ||
+++ b/src/gui/painting/qdrawhelper.cpp | ||
@@ -6091,7 +6091,7 @@ static inline void alphargbblend_argb32(quint32 *dst, uint coverage, const QRgba | ||
static inline void rgbBlendPixel(QRgba64 &dst, int coverage, QRgba64 slinear, const QColorTrcLut *colorProfile) | ||
{ | ||
// Do a gammacorrected RGB alphablend... | ||
- const QRgba64 dlinear = colorProfile ? colorProfile->toLinear64(dst) : dst; | ||
+ const QRgba64 dlinear = colorProfile ? colorProfile->toLinear(dst) : dst; | ||
|
||
QRgba64 blend = rgbBlend(dlinear, slinear, coverage); | ||
|
||
-- | ||
2.38.1 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
# Copyright 1999-2022 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=8 | ||
|
||
if [[ ${PV} != *9999* ]]; then | ||
QT5_KDEPATCHSET_REV=1 | ||
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" | ||
fi | ||
|
||
QT5_MODULE="qtbase" | ||
inherit qt5-build | ||
|
||
DESCRIPTION="The GUI module and platform plugins for the Qt5 framework" | ||
|
||
SLOT=5/${QT5_PV} # bug 707658 | ||
IUSE="accessibility dbus egl eglfs evdev gles2-only ibus jpeg +libinput | ||
linuxfb +png tslib tuio +udev vnc vulkan wayland +X" | ||
REQUIRED_USE=" | ||
|| ( eglfs linuxfb vnc X ) | ||
accessibility? ( dbus X ) | ||
eglfs? ( egl ) | ||
ibus? ( dbus ) | ||
libinput? ( udev ) | ||
X? ( gles2-only? ( egl ) ) | ||
" | ||
|
||
RDEPEND=" | ||
dev-libs/glib:2 | ||
=dev-qt/qtcore-${QT5_PV}*:5= | ||
dev-util/gtk-update-icon-cache | ||
media-libs/fontconfig | ||
media-libs/freetype:2 | ||
media-libs/harfbuzz:= | ||
sys-libs/zlib:= | ||
dbus? ( =dev-qt/qtdbus-${QT5_PV}* ) | ||
eglfs? ( | ||
media-libs/mesa[gbm(+)] | ||
x11-libs/libdrm | ||
) | ||
evdev? ( sys-libs/mtdev ) | ||
jpeg? ( media-libs/libjpeg-turbo:= ) | ||
gles2-only? ( media-libs/libglvnd ) | ||
!gles2-only? ( media-libs/libglvnd[X] ) | ||
libinput? ( | ||
dev-libs/libinput:= | ||
x11-libs/libxkbcommon | ||
) | ||
png? ( media-libs/libpng:= ) | ||
tslib? ( >=x11-libs/tslib-1.21 ) | ||
tuio? ( =dev-qt/qtnetwork-${QT5_PV}* ) | ||
udev? ( virtual/libudev:= ) | ||
vnc? ( =dev-qt/qtnetwork-${QT5_PV}* ) | ||
vulkan? ( dev-util/vulkan-headers ) | ||
X? ( | ||
x11-libs/libICE | ||
x11-libs/libSM | ||
x11-libs/libX11 | ||
x11-libs/libxcb:= | ||
x11-libs/libxkbcommon[X] | ||
x11-libs/xcb-util-image | ||
x11-libs/xcb-util-keysyms | ||
x11-libs/xcb-util-renderutil | ||
x11-libs/xcb-util-wm | ||
) | ||
" | ||
DEPEND="${RDEPEND} | ||
evdev? ( sys-kernel/linux-headers ) | ||
linuxfb? ( sys-kernel/linux-headers ) | ||
udev? ( sys-kernel/linux-headers ) | ||
" | ||
PDEPEND=" | ||
ibus? ( app-i18n/ibus ) | ||
wayland? ( =dev-qt/qtwayland-${QT5_PV}* ) | ||
" | ||
|
||
QT5_TARGET_SUBDIRS=( | ||
src/tools/qvkgen | ||
src/gui | ||
src/openglextensions | ||
src/platformheaders | ||
src/platformsupport | ||
src/plugins/generic | ||
src/plugins/imageformats | ||
src/plugins/platforms | ||
src/plugins/platforminputcontexts | ||
) | ||
|
||
QT5_GENTOO_CONFIG=( | ||
accessibility:accessibility-atspi-bridge | ||
egl:egl: | ||
eglfs:eglfs: | ||
eglfs:eglfs_egldevice: | ||
eglfs:eglfs_gbm: | ||
evdev:evdev: | ||
evdev:mtdev: | ||
:fontconfig: | ||
:system-freetype:FREETYPE | ||
!:no-freetype: | ||
gles2-only::OPENGL_ES | ||
gles2-only:opengles2:OPENGL_ES_2 | ||
!:no-gui: | ||
:system-harfbuzz: | ||
!:no-harfbuzz: | ||
jpeg:system-jpeg:IMAGEFORMAT_JPEG | ||
!jpeg:no-jpeg: | ||
libinput | ||
libinput:xkbcommon: | ||
:opengl | ||
png:png: | ||
png:system-png:IMAGEFORMAT_PNG | ||
!png:no-png: | ||
tslib:tslib: | ||
udev:libudev: | ||
vulkan:vulkan: | ||
X:xcb: | ||
X:xcb-glx: | ||
X:xcb-plugin: | ||
X:xcb-render: | ||
X:xcb-sm: | ||
X:xcb-xlib: | ||
X:xcb-xinput: | ||
) | ||
|
||
QT5_GENTOO_PRIVATE_CONFIG=( | ||
:gui | ||
) | ||
|
||
PATCHES=( | ||
"${FILESDIR}/${P}-fix-wrong-to-linear-conversion.patch" # kde/5.15 | ||
# Approved but pending rebase: | ||
# https://invent.kde.org/qt/qt/qtbase/-/merge_requests/211 | ||
"${FILESDIR}/${P}-xcb-correctly-disconnect-xsettings-callbacks.patch" | ||
# Downstream workaround the fact that QT_CONFIG(dbus) does not work for us: | ||
"${FILESDIR}/${P}-fix-no-dbus.patch" | ||
) | ||
|
||
src_prepare() { | ||
# don't add -O3 to CXXFLAGS, bug 549140 | ||
sed -i -e '/CONFIG\s*+=/s/optimize_full//' src/gui/gui.pro || die | ||
|
||
# egl_x11 is activated when both egl and X are enabled | ||
use egl && QT5_GENTOO_CONFIG+=(X:egl_x11:) || QT5_GENTOO_CONFIG+=(egl:egl_x11:) | ||
|
||
qt_use_disable_config dbus dbus \ | ||
src/platformsupport/themes/genericunix/genericunix.pri | ||
|
||
qt_use_disable_config tuio tuiotouch src/plugins/generic/generic.pro | ||
|
||
qt_use_disable_mod ibus dbus \ | ||
src/plugins/platforminputcontexts/platforminputcontexts.pro | ||
|
||
use vnc || sed -i -e '/SUBDIRS += vnc/d' \ | ||
src/plugins/platforms/platforms.pro || die | ||
|
||
qt5-build_src_prepare | ||
} | ||
|
||
src_configure() { | ||
local myconf=( | ||
$(usev dbus -dbus-linked) | ||
$(qt_use egl) | ||
$(qt_use eglfs) | ||
$(usev eglfs '-gbm -kms') | ||
$(qt_use evdev) | ||
$(qt_use evdev mtdev) | ||
-fontconfig | ||
-system-freetype | ||
-gui | ||
-system-harfbuzz | ||
$(qt_use jpeg libjpeg system) | ||
$(qt_use libinput) | ||
$(qt_use linuxfb) | ||
-opengl $(usex gles2-only es2 desktop) | ||
$(qt_use png libpng system) | ||
$(qt_use tslib) | ||
$(qt_use udev libudev) | ||
$(qt_use vulkan) | ||
$(qt_use X xcb) | ||
$(usev X '-xcb-xlib') | ||
) | ||
if use libinput || use X; then | ||
myconf+=( -xkbcommon ) | ||
fi | ||
qt5-build_src_configure | ||
} |