Qt 5.15.1 - not built yet

OBS-URL: https://build.opensuse.org/package/show/KDE:Qt:5.15/libqt5-qtdeclarative?expand=0&rev=11
This commit is contained in:
Christophe Giboudeaux 2020-09-11 06:29:59 +00:00 committed by Git OBS Bridge
parent 71a9998ad0
commit c3ae9998c0
6 changed files with 18 additions and 166 deletions

View File

@ -1,59 +0,0 @@
From 40ba29cae5cdb2ebd6330870a0f15e2e75d40de0 Mon Sep 17 00:00:00 2001
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Date: Tue, 05 May 2020 11:36:24 +0200
Subject: [PATCH] Fix subpixel positioned text with Text.NativeRendering
We would be generating subpixel positioned glyphs based on the
relative positions of the glyphs, ignoring the fractional part
contributed by the origin of the text. So if the text origin was
inside a pixel, the subpixel antialiasing would be wrong and we
would see kerning errors.
This was especially visible when using AlignHCenter on text
with hinting disabled and resizing the item it was aligning to.
Pick-to: 5.15
Task-number: QTBUG-49646
Change-Id: I0e709ba2b5d2440e34c94c6f819befe0a65a113a
---
diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
index be6ef25..831586c 100644
--- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
+++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
@@ -789,11 +789,12 @@
const QMargins &margins)
{
Q_ASSERT(m_font.isValid());
+ QPointF position(p.x(), p.y() - m_font.ascent());
QVector<QFixedPoint> fixedPointPositions;
const int glyphPositionsSize = glyphPositions.size();
fixedPointPositions.reserve(glyphPositionsSize);
for (int i=0; i < glyphPositionsSize; ++i)
- fixedPointPositions.append(QFixedPoint::fromPointF(glyphPositions.at(i)));
+ fixedPointPositions.append(QFixedPoint::fromPointF(position + glyphPositions.at(i)));
QTextureGlyphCache *cache = glyphCache();
@@ -815,18 +816,16 @@
Q_ASSERT(geometry->sizeOfVertex() == sizeof(QVector4D));
ushort *ip = geometry->indexDataAsUShort();
- QPointF position(p.x(), p.y() - m_font.ascent());
bool supportsSubPixelPositions = fontD->fontEngine->supportsSubPixelPositions();
for (int i=0; i<glyphIndexes.size(); ++i) {
+ QPointF glyphPosition = glyphPositions.at(i) + position;
QFixed subPixelPosition;
if (supportsSubPixelPositions)
- subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPositions.at(i).x()));
+ subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPosition.x()));
QTextureGlyphCache::GlyphAndSubPixelPosition glyph(glyphIndexes.at(i), subPixelPosition);
const QTextureGlyphCache::Coord &c = cache->coords.value(glyph);
- QPointF glyphPosition = glyphPositions.at(i) + position;
-
// On a retina screen the glyph positions are not pre-scaled (as opposed to
// eg. the raster paint engine). To ensure that we get the same behavior as
// the raster engine (and CoreText itself) when it comes to rounding of the

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Thu Sep 10 07:57:04 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Update to 5.15.1:
* New bugfix release
* For more details please see:
http://code.qt.io/cgit/qt/qtdeclarative.git/plain/dist/changes-5.15.1/?h=5.15.1
- Drop patches, now upstream:
* fix-subpixel-positioned-text.patch
* qtdeclarative-switch-to-python3.patch
-------------------------------------------------------------------
Tue May 26 09:50:22 UTC 2020 - Callum Farmer <callumjfarmer13@gmail.com>

View File

@ -19,11 +19,11 @@
%define qt5_snapshot 0
%define libname libQtQuick5
%define base_name libqt5
%define real_version 5.15.0
%define so_version 5.15.0
%define tar_version qtdeclarative-everywhere-src-5.15.0
%define real_version 5.15.1
%define so_version 5.15.1
%define tar_version qtdeclarative-everywhere-src-5.15.1
Name: libqt5-qtdeclarative
Version: 5.15.0
Version: 5.15.1
Release: 0
Summary: Qt 5 Declarative Library
License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later)
@ -31,12 +31,8 @@ Group: Development/Libraries/X11
URL: https://www.qt.io
Source: https://download.qt.io/official_releases/qt/5.15/%{real_version}/submodules/%{tar_version}.tar.xz
Source1: baselibs.conf
# PATCH-FIX-UPSTREAM https://codereview.qt-project.org/c/qt/qtdeclarative/+/299258/1
Patch1: fix-subpixel-positioned-text.patch
# PATCH-FIX-OPENSUSE sse2_nojit.patch -- enable JIT and sse2 only on sse2 case
Patch100: sse2_nojit.patch
# PATCH-FIX-OPENSUSE Switch to use python3 at build time
Patch102: qtdeclarative-switch-to-python3.patch
Patch103: qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch
BuildRequires: fdupes
BuildRequires: libQt5Core-private-headers-devel >= %{version}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c3c93fb7d340b2f7d738d12408c047318c78973cb45bfc5ff6b3a57e1fef699
size 21493268

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7e30f0ccba61f9d71720b91d7f7523c23677f23cd96065cb71df1b0df329d768
size 21558724

View File

@ -1,96 +0,0 @@
Subject: Make qtdeclarative build with python3
From: Max Lin <mlin@suse.com>
From: Antonio Larrosa <alarrosa@suse.com>
Index: qtdeclarative-everywhere-src-5.12.0-alpha/qtdeclarative.pro
===================================================================
--- qtdeclarative-everywhere-src-5.12.0-alpha.orig/qtdeclarative.pro
+++ qtdeclarative-everywhere-src-5.12.0-alpha/qtdeclarative.pro
@@ -2,7 +2,7 @@ CONFIG += tests_need_tools examples_need
load(qt_parts)
!python_available {
- py_out = $$system('python -c "print(1)"')
+ py_out = $$system('python3 -c "print(1)"')
!equals(py_out, 1): error("Building QtQml requires Python.")
tmp = python_available
CONFIG += $$tmp
Index: qtdeclarative-everywhere-src-5.12.0-alpha/src/3rdparty/masm/masm.pri
===================================================================
--- qtdeclarative-everywhere-src-5.12.0-alpha.orig/src/3rdparty/masm/masm.pri
+++ qtdeclarative-everywhere-src-5.12.0-alpha/src/3rdparty/masm/masm.pri
@@ -58,7 +58,7 @@ contains(DEFINES, WTF_USE_UDIS86=1) {
udis86.output = udis86_itab.h
udis86.input = ITAB
udis86.CONFIG += no_link
- udis86.commands = python $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
+ udis86.commands = python3 $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
QMAKE_EXTRA_COMPILERS += udis86
udis86_tab_cfile.target = $$OUT_PWD/udis86_itab.c
@@ -113,7 +113,7 @@ retgen.output = $$GENERATEDDIR/RegExpJit
retgen.script = $$PWD/yarr/create_regex_tables
retgen.input = retgen.script
retgen.CONFIG += no_link
-retgen.commands = python $$retgen.script > ${QMAKE_FILE_OUT}
+retgen.commands = python3 $$retgen.script > ${QMAKE_FILE_OUT}
QMAKE_EXTRA_COMPILERS += retgen
# Taken from WebKit/Tools/qmake/mkspecs/features/unix/default_post.prf
Index: qtdeclarative-everywhere-src-5.12.0-alpha/src/3rdparty/masm/disassembler/udis86/itab.py
===================================================================
--- qtdeclarative-everywhere-src-5.12.0-alpha.orig/src/3rdparty/masm/disassembler/udis86/itab.py
+++ qtdeclarative-everywhere-src-5.12.0-alpha/src/3rdparty/masm/disassembler/udis86/itab.py
@@ -268,13 +268,13 @@ class UdItabGenerator( ud_opcode.UdOpcod
opr = e[ 'operands' ]
for i in range(len(opr)):
if not (opr[i] in self.OperandDict.keys()):
- print "error: invalid operand declaration: %s\n" % opr[i]
+ print("error: invalid operand declaration: %s\n" % opr[i])
opr_c[i] = "O_" + opr[i]
opr = "%s %s %s" % (opr_c[0] + ",", opr_c[1] + ",", opr_c[2])
for p in e['prefixes']:
if not ( p in self.PrefixDict.keys() ):
- print "error: invalid prefix specification: %s \n" % pfx
+ print("error: invalid prefix specification: %s \n" % pfx)
pfx_c.append( self.PrefixDict[p] )
if len(e['prefixes']) == 0:
pfx_c.append( "P_none" )
Index: qtdeclarative-everywhere-src-5.12.0-alpha/src/3rdparty/masm/disassembler/udis86/ud_optable.py
===================================================================
--- qtdeclarative-everywhere-src-5.12.0-alpha.orig/src/3rdparty/masm/disassembler/udis86/ud_optable.py
+++ qtdeclarative-everywhere-src-5.12.0-alpha/src/3rdparty/masm/disassembler/udis86/ud_optable.py
@@ -50,7 +50,7 @@ class UdOptableXmlParser:
elif def_node.localName == 'vendor':
ven = ( def_node.firstChild.data );
else:
- print "warning: invalid node - %s" % def_node.localName
+ print("warning: invalid node - %s" % def_node.localName)
continue
return ( pfx, opc, opr, ven )
@@ -65,7 +65,7 @@ class UdOptableXmlParser:
if not insnNode.localName:
continue
if insnNode.localName != "instruction":
- print "warning: invalid insn node - %s" % insnNode.localName
+ print("warning: invalid insn node - %s" % insnNode.localName)
continue
mnemonic = insnNode.getElementsByTagName( 'mnemonic' )[ 0 ].firstChild.data
@@ -84,11 +84,11 @@ class UdOptableXmlParser:
def printFn( pfx, mnm, opc, opr, ven ):
- print 'def: ',
+ print('def: ', end='')
if len( pfx ):
- print ' '.join( pfx ),
- print "%s %s %s %s" % \
- ( mnm, ' '.join( opc ), ' '.join( opr ), ven )
+ print(' '.join( pfx ), end='')
+ print("%s %s %s %s" % \
+ ( mnm, ' '.join( opc ), ' '.join( opr ), ven ))
def parse( xml, callback ):