Accepting request 833639 from KDE:Qt:5.15
Qt 5.15.1 OBS-URL: https://build.opensuse.org/request/show/833639 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtdeclarative?expand=0&rev=61
This commit is contained in:
commit
bafcf774af
@ -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
|
|
||||||
|
|
@ -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>
|
Tue May 26 09:50:22 UTC 2020 - Callum Farmer <callumjfarmer13@gmail.com>
|
||||||
|
|
||||||
|
@ -19,11 +19,11 @@
|
|||||||
%define qt5_snapshot 0
|
%define qt5_snapshot 0
|
||||||
%define libname libQtQuick5
|
%define libname libQtQuick5
|
||||||
%define base_name libqt5
|
%define base_name libqt5
|
||||||
%define real_version 5.15.0
|
%define real_version 5.15.1
|
||||||
%define so_version 5.15.0
|
%define so_version 5.15.1
|
||||||
%define tar_version qtdeclarative-everywhere-src-5.15.0
|
%define tar_version qtdeclarative-everywhere-src-5.15.1
|
||||||
Name: libqt5-qtdeclarative
|
Name: libqt5-qtdeclarative
|
||||||
Version: 5.15.0
|
Version: 5.15.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Qt 5 Declarative Library
|
Summary: Qt 5 Declarative Library
|
||||||
License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later)
|
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
|
URL: https://www.qt.io
|
||||||
Source: https://download.qt.io/official_releases/qt/5.15/%{real_version}/submodules/%{tar_version}.tar.xz
|
Source: https://download.qt.io/official_releases/qt/5.15/%{real_version}/submodules/%{tar_version}.tar.xz
|
||||||
Source1: baselibs.conf
|
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
|
# PATCH-FIX-OPENSUSE sse2_nojit.patch -- enable JIT and sse2 only on sse2 case
|
||||||
Patch100: sse2_nojit.patch
|
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
|
Patch103: qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: libQt5Core-private-headers-devel >= %{version}
|
BuildRequires: libQt5Core-private-headers-devel >= %{version}
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:9c3c93fb7d340b2f7d738d12408c047318c78973cb45bfc5ff6b3a57e1fef699
|
|
||||||
size 21493268
|
|
3
qtdeclarative-everywhere-src-5.15.1.tar.xz
Normal file
3
qtdeclarative-everywhere-src-5.15.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:7e30f0ccba61f9d71720b91d7f7523c23677f23cd96065cb71df1b0df329d768
|
||||||
|
size 21558724
|
@ -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 ):
|
|
Loading…
Reference in New Issue
Block a user