Skip to content

Commit

Permalink
dev-qt/qtgui: Fix wrong to linear conversion
Browse files Browse the repository at this point in the history
QTBUG: https://bugreports.qt.io/browse/QTBUG-109169

Signed-off-by: Andreas Sturmlechner <[email protected]>
  • Loading branch information
a17r committed Dec 10, 2022
1 parent 803cd48 commit c9e5d65
Show file tree
Hide file tree
Showing 2 changed files with 233 additions and 0 deletions.
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

186 changes: 186 additions & 0 deletions dev-qt/qtgui/qtgui-5.15.7-r1.ebuild
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
}

0 comments on commit c9e5d65

Please sign in to comment.