Hello community,

here is the log from the commit of package libqt5-qtbase for openSUSE:Factory 
checked in at 2020-01-19 20:55:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtbase (Old)
 and      /work/SRC/openSUSE:Factory/.libqt5-qtbase.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt5-qtbase"

Sun Jan 19 20:55:21 2020 rev:103 rq:759684 version:5.14.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtbase/libqt5-qtbase.changes      
2019-09-21 17:28:44.272735494 +0200
+++ /work/SRC/openSUSE:Factory/.libqt5-qtbase.new.26092/libqt5-qtbase.changes   
2020-01-19 20:57:06.292039764 +0100
@@ -1,0 +2,92 @@
+Fri Dec 27 13:07:32 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Update license tag
+
+-------------------------------------------------------------------
+Thu Dec 26 00:05:29 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Add patches to avoid regression with rendering of translucent text
+  (QTBUG-80982):
+  * 0001-Revert-Fix-text-rendering-regression-on-semi-transpa.patch
+  * 0002-Revert-Fix-crash-with-gamma-corrected-text-blending-.patch
+  * 0003-Revert-Handle-transparent-pen-color-in-fast-text-pat.patch
+
+-------------------------------------------------------------------
+Thu Dec 12 12:40:51 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Update to 5.14.0:
+  * New bugfix release
+  * For the changes between 5.13.2 and 5.14.0 please see:
+    https://code.qt.io/cgit/qt/qtbase.git/tree/dist/changes-5.14.0?h=v5.14.0
+  * For the changes between 5.13.1 and 5.13.2 please see:
+    https://code.qt.io/cgit/qt/qtbase.git/tree/dist/changes-5.13.2?h=v5.14.0
+
+-------------------------------------------------------------------
+Wed Dec  4 14:37:31 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Update to 5.14.0-rc:
+  * New bugfix release
+  * No changelog available
+  * For more details please see:
+  * For more details about Qt 5.14 please see:
+    https://wiki.qt.io/New_Features_in_Qt_5.14
+- Drop patch, Qt behaviour changed now and applications can deal with
+  it meanwhile:
+  * 0001-Revert-QWidgetWindow-Immediately-forward-close-event.patch
+
+-------------------------------------------------------------------
+Tue Nov 12 13:00:31 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Update to 5.14.0-beta3:
+  * New bugfix release
+  * No changelog available
+- Drop libqt5-Fix-Gujarati-font.patch, didn't apply anymore:
+  * Was probably fixed upstream a loooong time ago (QTBUG-44568)
+
+-------------------------------------------------------------------
+Thu Oct 24 13:22:25 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Update to 5.14.0-beta2:
+  * New bugfix release
+  * No changelog available
+- Refresh patches:
+  * 0001-Revert-Always-escape-the-table-names-when-creating-t.patch
+
+-------------------------------------------------------------------
+Tue Oct 15 12:34:20 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Update to 5.14.0-beta1:
+  * New bugfix release
+  * No changelog available
+- Drop patches, now upstream:
+  * 0001-tslib-plugin-remove-debug-print-on-old-tslib-version.patch
+  * 0001-QWidget-setFocusProxy-adjust-focus-widget-properly.patch
+
+-------------------------------------------------------------------
+Wed Oct  2 19:53:24 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Disable relocatability, it breaks /usr/lib/sse2 (QTBUG-78948)
+
+-------------------------------------------------------------------
+Mon Sep 30 13:29:55 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Update to 5.14.0-alpha:
+  * New feature release
+  * No changelog available
+  * For more details about Qt 5.14 please see:
+    https://wiki.qt.io/New_Features_in_Qt_5.14
+- Refresh patches:
+  * 0001-Add-remote-print-queue-support.patch
+- Drop patches, don't apply anymore after upstream refactoring and the
+  main bug for them seems fixed:
+  * 0001-Sanitize-QXcbScreen-s-pixelDensity-values.patch
+  * 0002-xcb-Use-the-screen-s-physical-DPI-as-logical-DPI-unl.patch
+- Drop patches, now upstream:
+  * 0001-Fix-notification-of-QDockWidget-when-it-gets-undocke.patch
+  * 0001-Fix-CMake-config-files-for-libdir-different-from-lib.patch
+  * 0001-Fix-qfloat16-methods-definition-without-declaration-.patch
+- Enable zstd support again, issues got fixed upstream meanwhile
+- Add patch to fix build against older tslib:
+  * 0001-tslib-plugin-remove-debug-print-on-old-tslib-version.patch
+
+-------------------------------------------------------------------

Old:
----
  0001-Fix-CMake-config-files-for-libdir-different-from-lib.patch
  0001-Fix-notification-of-QDockWidget-when-it-gets-undocke.patch
  0001-Fix-qfloat16-methods-definition-without-declaration-.patch
  0001-QWidget-setFocusProxy-adjust-focus-widget-properly.patch
  0001-Revert-QWidgetWindow-Immediately-forward-close-event.patch
  0001-Sanitize-QXcbScreen-s-pixelDensity-values.patch
  0002-xcb-Use-the-screen-s-physical-DPI-as-logical-DPI-unl.patch
  libqt5-Fix-Gujarati-font.patch
  qtbase-everywhere-src-5.13.1.tar.xz

New:
----
  0001-Revert-Fix-text-rendering-regression-on-semi-transpa.patch
  0002-Revert-Fix-crash-with-gamma-corrected-text-blending-.patch
  0003-Revert-Handle-transparent-pen-color-in-fast-text-pat.patch
  qtbase-everywhere-src-5.14.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libqt5-qtbase.spec ++++++
--- /var/tmp/diff_new_pack.sQVl4I/_old  2020-01-19 20:57:11.068042273 +0100
+++ /var/tmp/diff_new_pack.sQVl4I/_new  2020-01-19 20:57:11.072042275 +0100
@@ -36,25 +36,23 @@
 %endif
 
 Name:           libqt5-qtbase
-Version:        5.13.1
+Version:        5.14.0
 Release:        0
 Summary:        C++ Program Library, Core Components
-License:        LGPL-2.1-with-Qt-Company-Qt-exception-1.1 or LGPL-3.0-only
+License:        LGPL-3.0-only or GPL-3.0-with-Qt-Company-Qt-exception-1.1
 Group:          System/Libraries
 Url:            https://www.qt.io
 %define base_name libqt5
-%define real_version 5.13.1
-%define so_version 5.13.1
-%define tar_version qtbase-everywhere-src-5.13.1
-Source:         
https://download.qt.io/official_releases/qt/5.13/%{real_version}/submodules/%{tar_version}.tar.xz
+%define real_version 5.14.0
+%define so_version 5.14.0
+%define tar_version qtbase-everywhere-src-5.14.0
+Source:         
https://download.qt.io/official_releases/qt/5.14/%{real_version}/submodules/%{tar_version}.tar.xz
 # to get mtime of file:
 Source1:        libqt5-qtbase.changes
 Source2:        macros.qt5
 Source3:        baselibs.conf
 Source99:       libqt5-qtbase-rpmlintrc
 # patches 0-1000 are openSUSE and/or non-upstream(able) patches #
-# PATCH-FIX-SUSE libqt5-Fix-Gujarati-font.patch bnc#878292 fix broken Gujarati 
font rendering
-Patch3:         libqt5-Fix-Gujarati-font.patch
 # PATCH-FIX-OPENSUSE disable-rc4-ciphers-bnc865241.diff bnc#865241-- Exclude 
rc4 ciphers from being used by default
 Patch6:         disable-rc4-ciphers-bnc865241.diff
 Patch8:         tell-the-truth-about-private-api.patch
@@ -63,28 +61,20 @@
 # PATCH-FEATURE-OPENSUSE 0001-Add-remote-print-queue-support.patch fate#322052 
-- Automatically recognize and allow printing to remote cups servers
 Patch12:        0001-Add-remote-print-queue-support.patch
 # PATCH-FIX-OPENSUSE
-Patch13:        0001-Revert-QWidgetWindow-Immediately-forward-close-event.patch
-# PATCH-FIX-OPENSUSE
-Patch17:        0001-Sanitize-QXcbScreen-s-pixelDensity-values.patch
-Patch18:        0002-xcb-Use-the-screen-s-physical-DPI-as-logical-DPI-unl.patch
-# PATCH-FIX-UPSTREAM
-Patch20:        0001-Fix-qfloat16-methods-definition-without-declaration-.patch
-# PATCH-FIX-OPENSUSE
 Patch21:        0001-Revert-Blacklist-nouveau-and-llvmpipe-for-multithrea.patch
 Patch22:        0002-Revert-qtlite-Fix-build-libs-with-no-feature-regular.patch
 Patch23:        0003-Revert-White-list-more-recent-Mesa-version-for-multi.patch
 Patch24:        fix-fixqt4headers.patch
 # Revert to restore compatibility with akonadi and possibly other applications
 Patch30:        0001-Revert-Always-escape-the-table-names-when-creating-t.patch
-# patches 1000-2000 and above from upstream 5.13 branch #
-# patches 2000-3000 and above from upstream 5.14/dev branch #
-Patch2000:      0001-Fix-notification-of-QDockWidget-when-it-gets-undocke.patch
+# Reverts to avoid text rendering bug (QTBUG-80982)
+Patch40:      0001-Revert-Fix-text-rendering-regression-on-semi-transpa.patch
+Patch41:      0002-Revert-Fix-crash-with-gamma-corrected-text-blending-.patch
+Patch42:      0003-Revert-Handle-transparent-pen-color-in-fast-text-pat.patch
+# patches 1000-2000 and above from upstream 5.14 branch #
+# patches 2000-3000 and above from upstream 5.15/dev branch #
 # Not accepted yet, https://codereview.qt-project.org/c/qt/qtbase/+/255384
 Patch2001:      0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch
-# Not accepted yet, https://codereview.qt-project.org/c/qt/qtbase/+/273050
-Patch2002:      0001-Fix-CMake-config-files-for-libdir-different-from-lib.patch
-# Not accepted yet, https://codereview.qt-project.org/c/qt/qtbase/+/273365
-Patch2003:      0001-QWidget-setFocusProxy-adjust-focus-widget-properly.patch
 BuildRequires:  alsa-devel
 BuildRequires:  cups-devel
 BuildRequires:  double-conversion-devel
@@ -124,6 +114,8 @@
 %endif
 
 BuildRequires:  pkgconfig(pango)
+# Not packaged yet
+#BuildRequires:  pkgconfig(md4c)
 BuildRequires:  pkgconfig(libdrm)
 BuildRequires:  pkgconfig(xcb-randr)
 BuildRequires:  pkgconfig(xcb-renderutil)
@@ -156,8 +148,7 @@
 BuildRequires:  pkgconfig(xkbcommon) >= 0.4.1
 BuildRequires:  pkgconfig(xkbcommon-x11) >= 0.4.1
 BuildRequires:  pkgconfig(zlib)
-# Breaks various existing codebases, see QTBUG-76521 
-# BuildRequires:  pkgconfig(libzstd)
+BuildRequires:  pkgconfig(libzstd)
 %if %journald
 BuildRequires:  pkgconfig(libsystemd)
 %endif
@@ -848,6 +839,8 @@
 # so non-qt5 apps/libs don't get stripped
 sed -i -e 's|^\(QMAKE_STRIP.*=\).*$|\1|g' mkspecs/common/linux.conf
 
+# -no-feature-relocatable is needed to support /usr/lib/sse2 etc., see 
QTBUG-78948
+
 echo yes | ./configure \
        -prefix %{_prefix} \
        -L %{libqt5_libdir} \
@@ -894,13 +887,12 @@
        -system-freetype \
        -cups \
        -system-zlib \
-       -no-zstd \
+       -zstd \
        -no-pch \
        -glib \
        -sctp \
        -system-sqlite \
        -no-sql-mysql \
-       -no-strip \
 %if %journald
        -journald \
 %endif
@@ -920,6 +912,7 @@
        -plugin-sql-odbc \
        -plugin-sql-mysql -I/usr/include/mysql/ \
        -qpa "xcb;wayland" \
+       -no-feature-relocatable \
        -v \
        QMAKE_CFLAGS+="$CFLAGS" \
        QMAKE_CXXFLAGS+="$CXXFLAGS"
@@ -1037,6 +1030,8 @@
 %{libqt5_bindir}/uic*
 %{_bindir}/qvkgen*
 %{libqt5_bindir}/qvkgen*
+%{_bindir}/tracegen*
+%{libqt5_bindir}/tracegen*
 %{_bindir}/syncqt.pl*
 %{_bindir}/fixqt4headers.pl*
 %{libqt5_bindir}/syncqt.pl*

++++++ 0001-Add-remote-print-queue-support.patch ++++++
--- /var/tmp/diff_new_pack.sQVl4I/_old  2020-01-19 20:57:11.084042282 +0100
+++ /var/tmp/diff_new_pack.sQVl4I/_new  2020-01-19 20:57:11.084042282 +0100
@@ -18,10 +18,10 @@
  src/plugins/printsupport/cups/qppdprintdevice.cpp  | 33 +++++++-
  4 files changed, 160 insertions(+), 11 deletions(-)
 
-Index: 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qcupsprintengine.cpp
+Index: 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qcupsprintengine.cpp
 ===================================================================
---- 
qtbase-everywhere-src-5.12.1.orig/src/plugins/printsupport/cups/qcupsprintengine.cpp
-+++ 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qcupsprintengine.cpp
+--- 
qtbase-everywhere-src-5.14.0-alpha.orig/src/plugins/printsupport/cups/qcupsprintengine.cpp
++++ 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qcupsprintengine.cpp
 @@ -48,6 +48,7 @@
  #include <qbuffer.h>
  #include "private/qcups_p.h" // Only needed for PPK_CupsOptions
@@ -72,10 +72,10 @@
  
          QFile::remove(tempFile);
      }
-Index: 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qcupsprintersupport.cpp
+Index: 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qcupsprintersupport.cpp
 ===================================================================
---- 
qtbase-everywhere-src-5.12.1.orig/src/plugins/printsupport/cups/qcupsprintersupport.cpp
-+++ 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qcupsprintersupport.cpp
+--- 
qtbase-everywhere-src-5.14.0-alpha.orig/src/plugins/printsupport/cups/qcupsprintersupport.cpp
++++ 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qcupsprintersupport.cpp
 @@ -61,6 +61,35 @@
  # include <cups/language.h>
  #endif
@@ -206,10 +206,10 @@
 +
 +
  QT_END_NAMESPACE
-Index: 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qcupsprintersupport_p.h
+Index: 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qcupsprintersupport_p.h
 ===================================================================
---- 
qtbase-everywhere-src-5.12.1.orig/src/plugins/printsupport/cups/qcupsprintersupport_p.h
-+++ 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qcupsprintersupport_p.h
+--- 
qtbase-everywhere-src-5.14.0-alpha.orig/src/plugins/printsupport/cups/qcupsprintersupport_p.h
++++ 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qcupsprintersupport_p.h
 @@ -56,6 +56,8 @@
  
  #include <QtCore/qstringlist.h>
@@ -234,19 +234,11 @@
  };
  
  QT_END_NAMESPACE
-Index: 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qppdprintdevice.cpp
+Index: 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qppdprintdevice.cpp
 ===================================================================
---- 
qtbase-everywhere-src-5.12.1.orig/src/plugins/printsupport/cups/qppdprintdevice.cpp
-+++ 
qtbase-everywhere-src-5.12.1/src/plugins/printsupport/cups/qppdprintdevice.cpp
-@@ -41,6 +41,7 @@
- 
- #include "qcupsprintersupport_p.h"
- 
-+#include "qcupsprintersupport_p.h"
- #include <QtCore/QMimeDatabase>
- #include <qdebug.h>
- 
-@@ -65,10 +66,36 @@ QPpdPrintDevice::QPpdPrintDevice(const Q
+--- 
qtbase-everywhere-src-5.14.0-alpha.orig/src/plugins/printsupport/cups/qppdprintdevice.cpp
++++ 
qtbase-everywhere-src-5.14.0-alpha/src/plugins/printsupport/cups/qppdprintdevice.cpp
+@@ -65,10 +65,36 @@ QPpdPrintDevice::QPpdPrintDevice(const Q
          if (parts.size() > 1)
              m_cupsInstance = parts.at(1).toUtf8();
  

++++++ 0001-Revert-Always-escape-the-table-names-when-creating-t.patch ++++++
--- /var/tmp/diff_new_pack.sQVl4I/_old  2020-01-19 20:57:11.092042285 +0100
+++ /var/tmp/diff_new_pack.sQVl4I/_new  2020-01-19 20:57:11.092042285 +0100
@@ -19,11 +19,11 @@
  .../qsqltablemodel/tst_qsqltablemodel.cpp     |  10 ++
  11 files changed, 106 insertions(+), 138 deletions(-)
 
-diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp 
b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
-index febbe58506..80c0c9c522 100644
---- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
-+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
-@@ -1551,7 +1551,7 @@ QSqlIndex QMYSQLDriver::primaryIndex(const QString& 
tablename) const
+Index: 
qtbase-everywhere-src-5.14.0-beta2/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
++++ 
qtbase-everywhere-src-5.14.0-beta2/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+@@ -1551,7 +1551,7 @@ QSqlIndex QMYSQLDriver::primaryIndex(con
      QSqlQuery i(createResult());
      QString stmt(QLatin1String("show index from %1;"));
      QSqlRecord fil = record(tablename);
@@ -32,11 +32,11 @@
      while (i.isActive() && i.next()) {
          if (i.value(2).toString() == QLatin1String("PRIMARY")) {
              idx.append(fil.field(i.value(4).toString()));
-diff --git a/src/plugins/sqldrivers/psql/qsql_psql.cpp 
b/src/plugins/sqldrivers/psql/qsql_psql.cpp
-index c1be91cb22..7abd1f242b 100644
---- a/src/plugins/sqldrivers/psql/qsql_psql.cpp
-+++ b/src/plugins/sqldrivers/psql/qsql_psql.cpp
-@@ -1396,8 +1396,16 @@ QSqlIndex QPSQLDriver::primaryIndex(const QString 
&tablename) const
+Index: 
qtbase-everywhere-src-5.14.0-beta2/src/plugins/sqldrivers/psql/qsql_psql.cpp
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/src/plugins/sqldrivers/psql/qsql_psql.cpp
++++ 
qtbase-everywhere-src-5.14.0-beta2/src/plugins/sqldrivers/psql/qsql_psql.cpp
+@@ -1402,8 +1402,16 @@ QSqlIndex QPSQLDriver::primaryIndex(cons
      QString tbl = tablename;
      QString schema;
      qSplitTableName(tbl, schema);
@@ -55,7 +55,7 @@
  
      QString stmt = QStringLiteral("SELECT pg_attribute.attname, 
pg_attribute.atttypid::int, "
                                    "pg_class.relname "
-@@ -1432,8 +1440,16 @@ QSqlRecord QPSQLDriver::record(const QString 
&tablename) const
+@@ -1438,8 +1446,16 @@ QSqlRecord QPSQLDriver::record(const QSt
      QString tbl = tablename;
      QString schema;
      qSplitTableName(tbl, schema);
@@ -72,12 +72,12 @@
 +    else
 +        schema = std::move(schema).toLower();
  
-     QString stmt = QStringLiteral("SELECT pg_attribute.attname, 
pg_attribute.atttypid::int, "
-                                   "pg_attribute.attnotnull, 
pg_attribute.attlen, pg_attribute.atttypmod, "
-diff --git a/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc 
b/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
-index 9709deeccb..d127bdf8a5 100644
---- a/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
-+++ b/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
+     const QString adsrc = protocol() < Version8
+         ? QStringLiteral("pg_attrdef.adsrc")
+Index: 
qtbase-everywhere-src-5.14.0-beta2/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
++++ 
qtbase-everywhere-src-5.14.0-beta2/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
 @@ -237,16 +237,3 @@ Could not create database object
  //! [38]
  QPSQLDriver::getResult: Query results lost - probably discarded on executing 
another SQL query.
@@ -95,10 +95,10 @@
 -// Call toLower() on the string so that it can be matched
 -QSqlRecord rec = database.record(tableString.toLower());
 -//! [40]
-diff --git a/src/sql/doc/src/sql-driver.qdoc b/src/sql/doc/src/sql-driver.qdoc
-index cccce48bb3..fd95e89812 100644
---- a/src/sql/doc/src/sql-driver.qdoc
-+++ b/src/sql/doc/src/sql-driver.qdoc
+Index: qtbase-everywhere-src-5.14.0-beta2/src/sql/doc/src/sql-driver.qdoc
+===================================================================
+--- qtbase-everywhere-src-5.14.0-beta2.orig/src/sql/doc/src/sql-driver.qdoc
++++ qtbase-everywhere-src-5.14.0-beta2/src/sql/doc/src/sql-driver.qdoc
 @@ -381,23 +381,6 @@
      multibyte enabled PostgreSQL server can be found in the PostgreSQL
      Administrator Guide, Chapter 5.
@@ -123,11 +123,11 @@
      \section3 QPSQL BLOB Support
  
      Binary Large Objects are supported through the \c BYTEA field type in
-diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
-index d63a9e59a8..12ab9671b5 100644
---- a/src/sql/kernel/qsqldatabase.cpp
-+++ b/src/sql/kernel/qsqldatabase.cpp
-@@ -1088,11 +1088,6 @@ QStringList QSqlDatabase::tables(QSql::TableType type) 
const
+Index: qtbase-everywhere-src-5.14.0-beta2/src/sql/kernel/qsqldatabase.cpp
+===================================================================
+--- qtbase-everywhere-src-5.14.0-beta2.orig/src/sql/kernel/qsqldatabase.cpp
++++ qtbase-everywhere-src-5.14.0-beta2/src/sql/kernel/qsqldatabase.cpp
+@@ -1096,11 +1096,6 @@ QStringList QSqlDatabase::tables(QSql::T
      Returns the primary index for table \a tablename. If no primary
      index exists, an empty QSqlIndex is returned.
  
@@ -139,7 +139,7 @@
      \sa tables(), record()
  */
  
-@@ -1107,11 +1102,6 @@ QSqlIndex QSqlDatabase::primaryIndex(const QString& 
tablename) const
+@@ -1115,11 +1110,6 @@ QSqlIndex QSqlDatabase::primaryIndex(con
      the table (or view) called \a tablename. The order in which the
      fields appear in the record is undefined. If no such table (or
      view) exists, an empty record is returned.
@@ -151,11 +151,11 @@
  */
  
  QSqlRecord QSqlDatabase::record(const QString& tablename) const
-diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
-index 7f7b81b05b..8c6ae382f6 100644
---- a/src/sql/kernel/qsqldriver.cpp
-+++ b/src/sql/kernel/qsqldriver.cpp
-@@ -488,8 +488,6 @@ QString QSqlDriver::stripDelimiters(const QString 
&identifier, IdentifierType ty
+Index: qtbase-everywhere-src-5.14.0-beta2/src/sql/kernel/qsqldriver.cpp
+===================================================================
+--- qtbase-everywhere-src-5.14.0-beta2.orig/src/sql/kernel/qsqldriver.cpp
++++ qtbase-everywhere-src-5.14.0-beta2/src/sql/kernel/qsqldriver.cpp
+@@ -488,8 +488,6 @@ QString QSqlDriver::stripDelimiters(cons
  QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
                                   const QSqlRecord &rec, bool 
preparedStatement) const
  {
@@ -164,7 +164,7 @@
      int i;
      QString s;
      s.reserve(128);
-@@ -502,12 +500,13 @@ QString QSqlDriver::sqlStatement(StatementType type, 
const QString &tableName,
+@@ -502,12 +500,13 @@ QString QSqlDriver::sqlStatement(Stateme
          if (s.isEmpty())
              return s;
          s.chop(2);
@@ -181,7 +181,7 @@
          for (int i = 0; i < rec.count(); ++i) {
              if (!rec.isGenerated(i))
                  continue;
-@@ -524,7 +523,8 @@ QString QSqlDriver::sqlStatement(StatementType type, const 
QString &tableName,
+@@ -524,7 +523,8 @@ QString QSqlDriver::sqlStatement(Stateme
          break;
      }
      case UpdateStatement:
@@ -191,7 +191,7 @@
          for (i = 0; i < rec.count(); ++i) {
              if (!rec.isGenerated(i))
                  continue;
-@@ -541,10 +541,10 @@ QString QSqlDriver::sqlStatement(StatementType type, 
const QString &tableName,
+@@ -541,10 +541,10 @@ QString QSqlDriver::sqlStatement(Stateme
              s.clear();
          break;
      case DeleteStatement:
@@ -204,11 +204,11 @@
          QString vals;
          for (i = 0; i < rec.count(); ++i) {
              if (!rec.isGenerated(i))
-diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h 
b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
-index 55875359ff..97397e3159 100644
---- a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
-+++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
-@@ -79,14 +79,14 @@ inline QString fixupTableName(const QString &tableName, 
QSqlDatabase db)
+Index: 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
++++ 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
+@@ -80,14 +80,14 @@ inline QString fixupTableName(const QStr
      return tbName;
  }
  
@@ -230,11 +230,11 @@
  }
  
  inline static QString qTableName(const QString& prefix, QSqlDatabase db)
-diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp 
b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
-index f309231b10..75db31e45f 100644
---- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
-+++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
-@@ -314,8 +314,10 @@ void tst_QSqlDatabase::createTestTables(QSqlDatabase db)
+Index: 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
++++ 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
+@@ -314,8 +314,10 @@ void tst_QSqlDatabase::createTestTables(
                 " (id integer not null, t_varchar varchar(40) not null, "
                 "t_char char(40), t_numeric numeric(6, 3), primary key (id, 
t_varchar))"));
      }
@@ -246,7 +246,7 @@
              + '('
              + db.driver()->escapeIdentifier(QLatin1String("test test"), 
QSqlDriver::FieldName)
              + " int not null primary key)";
-@@ -339,7 +341,6 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db)
+@@ -339,7 +341,6 @@ void tst_QSqlDatabase::dropTestTables(QS
      const QString qtestTable = qTableName("qtest", __FILE__, db);
      QStringList tableNames;
      tableNames << qtestTable
@@ -265,7 +265,7 @@
  
      bool views = true;
      bool tempTables = false;
-@@ -579,10 +578,10 @@ void tst_QSqlDatabase::whitespaceInIdentifiers()
+@@ -579,10 +578,10 @@ void tst_QSqlDatabase::whitespaceInIdent
      const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
  
      if (testWhiteSpaceNames(db.driverName())) {
@@ -278,7 +278,7 @@
          QCOMPARE(rec.count(), 1);
          QCOMPARE(rec.fieldName(0), QString("test test"));
          if (dbType == QSqlDriver::Oracle)
-@@ -590,7 +589,7 @@ void tst_QSqlDatabase::whitespaceInIdentifiers()
+@@ -590,7 +589,7 @@ void tst_QSqlDatabase::whitespaceInIdent
          else
              QCOMPARE(rec.field(0).type(), QVariant::Int);
  
@@ -310,7 +310,7 @@
  
      QCOMPARE((int)rec.count(), 2);
  
-@@ -683,16 +681,13 @@ void tst_QSqlDatabase::testRecord(const FieldDef 
fieldDefs[], const QSqlRecord&
+@@ -683,16 +681,13 @@ void tst_QSqlDatabase::testRecord(const
  void tst_QSqlDatabase::commonFieldTest(const FieldDef fieldDefs[], 
QSqlDatabase db, const int fieldCount)
  {
      CHECK_DATABASE(db);
@@ -420,7 +420,7 @@
      QCOMPARE(idx.count(), 1);
      QCOMPARE(idx.fieldName(0), QString("id"));
  }
-@@ -1304,21 +1288,18 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
+@@ -1304,21 +1288,18 @@ void tst_QSqlDatabase::psql_escapedIdent
      QSqlQuery q(db);
      QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
  
@@ -447,7 +447,7 @@
  
      QSqlField fld1(field1Name, QVariant::Int);
      QSqlField fld2(field2Name, QVariant::String);
-@@ -1326,9 +1307,7 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
+@@ -1326,9 +1307,7 @@ void tst_QSqlDatabase::psql_escapedIdent
      rec.append(fld1);
      rec.append(fld2);
  
@@ -458,7 +458,7 @@
  
      rec = q.record();
      QCOMPARE(rec.count(), 2);
-@@ -1336,7 +1315,7 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
+@@ -1336,7 +1315,7 @@ void tst_QSqlDatabase::psql_escapedIdent
      QCOMPARE(rec.fieldName(1), field2Name);
      QCOMPARE(rec.field(0).type(), QVariant::Int);
  
@@ -467,7 +467,7 @@
  }
  
  void tst_QSqlDatabase::psql_escapeBytea()
-@@ -2167,7 +2146,7 @@ void tst_QSqlDatabase::eventNotificationPSQL()
+@@ -2167,7 +2146,7 @@ void tst_QSqlDatabase::eventNotification
      CHECK_DATABASE(db);
  
      QSqlQuery query(db);
@@ -476,7 +476,7 @@
      QString payload = "payload";
      QSqlDriver &driver=*(db.driver());
      QVERIFY_SQL(driver, subscribeToNotification(procedureName));
-@@ -2191,22 +2170,21 @@ void tst_QSqlDatabase::eventNotificationSQLite()
+@@ -2191,22 +2170,21 @@ void tst_QSqlDatabase::eventNotification
          QSKIP("QSQLITE specific test");
      }
      const QString tableName(qTableName("sqlitnotifytest", __FILE__, db));
@@ -503,11 +503,11 @@
      QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, realVal) VALUES 
(1, 2.3)"));
      QTRY_COMPARE(notificationSpy.count(), 0);
      QTRY_COMPARE(notificationSpyExt.count(), 0);
-diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp 
b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
-index 784d0a70d7..710f26b72d 100644
---- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
-+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
-@@ -1098,7 +1098,7 @@ void tst_QSqlQuery::record()
+Index: 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
++++ 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+@@ -1092,7 +1092,7 @@ void tst_QSqlQuery::record()
      for (int i = 0; i < 3; ++i)
          QCOMPARE(q.record().field(i).tableName().toLower(), lowerQTest);
      q.clear();
@@ -516,7 +516,7 @@
      SETUP_RECORD_TABLE;
      CHECK_RECORD;
      q.clear();
-@@ -3763,13 +3763,15 @@ void tst_QSqlQuery::QTBUG_5251()
+@@ -3673,13 +3673,15 @@ void tst_QSqlQuery::QTBUG_5251()
      const QString timetest(qTableName("timetest", __FILE__, db));
      tst_Databases::safeDropTable(db, timetest);
      QSqlQuery q(db);
@@ -535,7 +535,7 @@
      QVERIFY_SQL(timetestModel, select());
  
      
QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"),
 QString("01:02:03.666"));
-@@ -3778,8 +3780,8 @@ void tst_QSqlQuery::QTBUG_5251()
+@@ -3688,8 +3690,8 @@ void tst_QSqlQuery::QTBUG_5251()
      QVERIFY_SQL(timetestModel, submitAll());
      
QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"),
 QString("00:12:34.500"));
  
@@ -546,11 +546,11 @@
      QVERIFY_SQL(timetestModel, select());
      
QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"),
 QString("00:11:22.330"));
  
-diff --git 
a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
 
b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
-index 722ef9c570..e4a277e096 100644
---- 
a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
-+++ 
b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
-@@ -122,13 +122,13 @@ void 
tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db)
+Index: 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
++++ 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+@@ -122,13 +122,13 @@ void tst_QSqlRelationalTableModel::recre
      QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('mister', 
'Mr')"));
  
      if (testWhiteSpaceNames(db.driverName())) {
@@ -566,7 +566,7 @@
          QVERIFY_SQL( q, exec("create table " + reltest7 + " (" + 
db.driver()->escapeIdentifier("city id", QSqlDriver::TableName) + " int not 
null primary key, " + db.driver()->escapeIdentifier("city name", 
QSqlDriver::FieldName) + " varchar(20))"));
          QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(1, 'New 
York')"));
          QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(2, 
'Washington')"));
-@@ -170,8 +170,8 @@ void tst_QSqlRelationalTableModel::dropTestTables( 
QSqlDatabase db )
+@@ -170,8 +170,8 @@ void tst_QSqlRelationalTableModel::dropT
              << reltest3
              << reltest4
              << reltest5
@@ -577,7 +577,7 @@
              << qTableName("CASETEST1", db)
              << qTableName("casetest1", db);
      tst_Databases::safeDropTables( db, tableNames );
-@@ -1379,9 +1379,9 @@ void 
tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
+@@ -1379,9 +1379,9 @@ void tst_QSqlRelationalTableModel::white
      if (!testWhiteSpaceNames(db.driverName()))
          QSKIP("White space test irrelevant for driver");
      QSqlRelationalTableModel model(0, db);
@@ -589,7 +589,7 @@
                          db.driver()->escapeIdentifier("city id", 
QSqlDriver::FieldName),
                          db.driver()->escapeIdentifier("city name", 
QSqlDriver::FieldName)));
      QVERIFY_SQL(model, select());
-@@ -1547,6 +1547,8 @@ void 
tst_QSqlRelationalTableModel::relationOnFirstColumn()
+@@ -1547,6 +1547,8 @@ void tst_QSqlRelationalTableModel::relat
  
      //modify the model data
      QVERIFY_SQL(model, setData(model.index(0, 0), 40));
@@ -598,11 +598,11 @@
      QVERIFY_SQL(model, submit());
      QVERIFY_SQL(model, setData(model.index(1, 0), 50));
      QVERIFY_SQL(model, submit());
-diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp 
b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
-index b617151a36..da31f437d9 100644
---- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
-+++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
-@@ -383,6 +383,8 @@ void tst_QSqlTableModel::selectRow()
+Index: 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+===================================================================
+--- 
qtbase-everywhere-src-5.14.0-beta2.orig/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
++++ 
qtbase-everywhere-src-5.14.0-beta2/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+@@ -384,6 +384,8 @@ void tst_QSqlTableModel::selectRow()
      q.exec("UPDATE " + tbl + " SET a = 'Qt' WHERE id = 1");
      QCOMPARE(model.data(idx).toString(), QString("b"));
      model.selectRow(1);
@@ -611,7 +611,7 @@
      QCOMPARE(model.data(idx).toString(), QString("Qt"));
  
      // Check if selectRow() refreshes a changed row.
-@@ -439,6 +441,8 @@ void tst_QSqlTableModel::selectRowOverride()
+@@ -440,6 +442,8 @@ void tst_QSqlTableModel::selectRowOverri
      // both rows should have changed
      QCOMPARE(model.data(idx).toString(), QString("Qt"));
      idx = model.index(2, 1);
@@ -620,7 +620,7 @@
      QCOMPARE(model.data(idx).toString(), QString("Qt"));
  
      q.exec("DELETE FROM " + tbl);
-@@ -850,6 +854,8 @@ void tst_QSqlTableModel::insertRowFailure()
+@@ -851,6 +855,8 @@ void tst_QSqlTableModel::insertRowFailur
  
      // populate 1 row
      const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
@@ -629,7 +629,7 @@
      QVERIFY_SQL(model, insertRecord(0, values));
      QVERIFY_SQL(model, submitAll());
      QVERIFY_SQL(model, select());
-@@ -893,6 +899,8 @@ void tst_QSqlTableModel::insertRowFailure()
+@@ -894,6 +900,8 @@ void tst_QSqlTableModel::insertRowFailur
      // restore empty table
      model.revertAll();
      QVERIFY_SQL(model, removeRow(0));
@@ -638,7 +638,7 @@
      QVERIFY_SQL(model, submitAll());
      QVERIFY_SQL(model, select());
      QCOMPARE(model.rowCount(), 0);
-@@ -2001,6 +2009,8 @@ void tst_QSqlTableModel::tableModifyWithBlank()
+@@ -2002,6 +2010,8 @@ void tst_QSqlTableModel::tableModifyWith
      //Should be equivalent to QSqlQuery INSERT INTO... command)
      QVERIFY_SQL(model, insertRow(0));
      QVERIFY_SQL(model, setData(model.index(0,0),timeString));
@@ -647,6 +647,3 @@
      QVERIFY_SQL(model, submitAll());
  
      //set a filter on the table so the only record we get is the one we just 
made
--- 
-2.21.0
-

++++++ 0001-Revert-Fix-text-rendering-regression-on-semi-transpa.patch ++++++
>From d0ed9b07eb928c7d037b3fadb7423c87d7b798b0 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <[email protected]>
Date: Wed, 25 Dec 2019 18:54:40 +0100
Subject: [PATCH 1/3] Revert "Fix text-rendering regression on semi-transparent
 background on Linux"

This reverts commit c0adcf0f226e247c1f2f515cd33d7945573e96a5.
---
 src/gui/painting/qdrawhelper.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index e8d129d047..e5f752b94e 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -6044,11 +6044,11 @@ static inline void alphargbblend_argb32(quint32 *dst, 
uint coverage, const QRgba
         // nothing
     } else if (coverage == 0xffffffff && qAlpha(src) == 255) {
         blend_pixel(*dst, src);
+    } else if (!colorProfile) {
+        *dst = rgbBlend(*dst, src, coverage);
     } else if (*dst < 0xff000000) {
         // Give up and do a naive gray alphablend. Needed to deal with ARGB32 
and invalid ARGB32_premultiplied, see QTBUG-60571
         blend_pixel(*dst, src, qRgbAvg(coverage));
-    } else if (!colorProfile) {
-        *dst = rgbBlend(*dst, src, coverage);
     } else if (srcLinear.isOpaque()) {
         rgbBlendPixel(dst, coverage, srcLinear, colorProfile);
     } else {
-- 
2.23.0

++++++ 0002-Revert-Fix-crash-with-gamma-corrected-text-blending-.patch ++++++
>From a61813ac9cd94a6e7c79ccfacca9e830f905e6dc Mon Sep 17 00:00:00 2001
From: Fabian Vogt <[email protected]>
Date: Wed, 25 Dec 2019 18:54:52 +0100
Subject: [PATCH 2/3] Revert "Fix crash with gamma-corrected text blending
 disabled"

This reverts commit 6db83e2584a30b1339adba18279fbfd527a10ce7.
---
 src/gui/painting/qdrawhelper.cpp | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index e5f752b94e..3d06a27d8e 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -5670,8 +5670,7 @@ static inline void alphamapblend_argb32(quint32 *dst, int 
coverage, QRgba64 srcL
         QRgb s = *dst;
         blend_pixel(s, src);
         // Then gamma-corrected blend with glyph shape
-        QRgba64 s64 = colorProfile ? colorProfile->toLinear64(s) : 
QRgba64::fromArgb32(s);
-        grayBlendPixel(dst, coverage, s64, colorProfile);
+        grayBlendPixel(dst, coverage, colorProfile->toLinear64(s), 
colorProfile);
     }
 }
 
@@ -5712,9 +5711,7 @@ static inline void alphamapblend_generic(int coverage, 
QRgba64 *dest, int x, con
         QRgba64 s = dest[x];
         blend_pixel(s, src);
         // Then gamma-corrected blend with glyph shape
-        if (colorProfile)
-            s = colorProfile->toLinear(s);
-        grayBlendPixel(dest[x], coverage, s, colorProfile);
+        grayBlendPixel(dest[x], coverage, colorProfile->toLinear(s), 
colorProfile);
     }
 }
 
@@ -6056,8 +6053,7 @@ static inline void alphargbblend_argb32(quint32 *dst, 
uint coverage, const QRgba
         QRgb s = *dst;
         blend_pixel(s, src);
         // Then gamma-corrected blend with glyph shape
-        QRgba64 s64 = colorProfile ? colorProfile->toLinear64(s) : 
QRgba64::fromArgb32(s);
-        rgbBlendPixel(dst, coverage, s64, colorProfile);
+        rgbBlendPixel(dst, coverage, colorProfile->toLinear64(s), 
colorProfile);
     }
 }
 
@@ -6088,9 +6084,7 @@ static inline void alphargbblend_generic(uint coverage, 
QRgba64 *dest, int x, co
         QRgba64 s = dest[x];
         blend_pixel(s, src);
         // Then gamma-corrected blend with glyph shape
-        if (colorProfile)
-            s = colorProfile->toLinear(s);
-        rgbBlendPixel(dest[x], coverage, s, colorProfile);
+        rgbBlendPixel(dest[x], coverage, colorProfile->toLinear(s), 
colorProfile);
     }
 }
 
-- 
2.23.0

++++++ 0003-Revert-Handle-transparent-pen-color-in-fast-text-pat.patch ++++++
>From 84a71a1b9e600dc641e7ace5a6b384c0e138753e Mon Sep 17 00:00:00 2001
From: Fabian Vogt <[email protected]>
Date: Wed, 25 Dec 2019 18:55:01 +0100
Subject: [PATCH 3/3] Revert "Handle transparent pen color in fast text path"

This reverts commit d0d18b06458edd3b6b0712ea71c787404bbaa7e1.
---
 src/gui/painting/qdrawhelper.cpp         | 187 +++++++++++------------
 src/gui/painting/qdrawhelper_p.h         |   2 -
 src/gui/painting/qpaintengine_raster.cpp |   4 +-
 src/gui/painting/qrgba64_p.h             |   2 -
 4 files changed, 94 insertions(+), 101 deletions(-)

diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 3d06a27d8e..edb363ac69 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -5658,60 +5658,44 @@ static inline void alphamapblend_argb32(quint32 *dst, 
int coverage, QRgba64 srcL
 {
     if (coverage == 0) {
         // nothing
-    } else if (coverage == 255 || !colorProfile) {
-        blend_pixel(*dst, src, coverage);
-    } else if (*dst < 0xff000000) {
-        // Give up and do a naive gray alphablend. Needed to deal with ARGB32 
and invalid ARGB32_premultiplied, see QTBUG-60571
-        blend_pixel(*dst, src, coverage);
-    } else if (src >= 0xff000000) {
-        grayBlendPixel(dst, coverage, srcLinear, colorProfile);
+    } else if (coverage == 255) {
+        *dst = src;
+    } else if (!colorProfile) {
+        *dst = INTERPOLATE_PIXEL_255(src, coverage, *dst, 255 - coverage);
     } else {
-        // First do naive blend with text-color
-        QRgb s = *dst;
-        blend_pixel(s, src);
-        // Then gamma-corrected blend with glyph shape
-        grayBlendPixel(dst, coverage, colorProfile->toLinear64(s), 
colorProfile);
+        if (*dst >= 0xff000000) {
+            grayBlendPixel(dst, coverage, srcLinear, colorProfile);
+        } else {
+            // Give up and do a naive gray alphablend. Needed to deal with 
ARGB32 and invalid ARGB32_premultiplied, see QTBUG-60571
+            *dst = INTERPOLATE_PIXEL_255(src, coverage, *dst, 255 - coverage);
+        }
     }
 }
 
 #if QT_CONFIG(raster_64bit)
-
-static inline void grayBlendPixel(QRgba64 &dst, int coverage, QRgba64 
srcLinear, const QColorTrcLut *colorProfile)
-{
-    // Do a gammacorrected gray alphablend...
-    QRgba64 dstColor = dst;
-    if (colorProfile) {
-        if (dstColor.isOpaque())
-            dstColor = colorProfile->toLinear(dstColor);
-        else if (!dstColor.isTransparent())
-            dstColor = 
colorProfile->toLinear(dstColor.unpremultiplied()).premultiplied();
-    }
-
-    blend_pixel(dstColor, srcLinear, coverage);
-
-    if (colorProfile) {
-        if (dstColor.isOpaque())
-            dstColor = colorProfile->fromLinear(dstColor);
-        else if (!dstColor.isTransparent())
-            dstColor = 
colorProfile->fromLinear(dstColor.unpremultiplied()).premultiplied();
-    }
-    dst = dstColor;
-}
-
 static inline void alphamapblend_generic(int coverage, QRgba64 *dest, int x, 
const QRgba64 &srcLinear, const QRgba64 &src, const QColorTrcLut *colorProfile)
 {
     if (coverage == 0) {
         // nothing
     } else if (coverage == 255) {
-        blend_pixel(dest[x], src);
-    } else if (src.isOpaque()) {
-        grayBlendPixel(dest[x], coverage, srcLinear, colorProfile);
+        dest[x] = src;
     } else {
-        // First do naive blend with text-color
-        QRgba64 s = dest[x];
-        blend_pixel(s, src);
-        // Then gamma-corrected blend with glyph shape
-        grayBlendPixel(dest[x], coverage, colorProfile->toLinear(s), 
colorProfile);
+        QRgba64 dstColor = dest[x];
+        if (colorProfile) {
+            if (dstColor.isOpaque())
+                dstColor = colorProfile->toLinear(dstColor);
+            else if (!dstColor.isTransparent())
+                dstColor = 
colorProfile->toLinear(dstColor.unpremultiplied()).premultiplied();
+        }
+
+        dstColor = interpolate255(srcLinear, coverage, dstColor, 255 - 
coverage);
+        if (colorProfile) {
+            if (dstColor.isOpaque())
+                dstColor = colorProfile->fromLinear(dstColor);
+            else if (!dstColor.isTransparent())
+                dstColor = 
colorProfile->fromLinear(dstColor.unpremultiplied()).premultiplied();
+        }
+        dest[x] = dstColor;
     }
 }
 
@@ -5730,8 +5714,12 @@ static void qt_alphamapblit_generic(QRasterBuffer 
*rasterBuffer,
         colorProfile = 
QGuiApplicationPrivate::instance()->colorProfileForA8Text();
 
     QRgba64 srcColor = color;
-    if (colorProfile && color.isOpaque())
-        srcColor = colorProfile->toLinear(srcColor);
+    if (colorProfile) {
+        if (color.isOpaque())
+            srcColor = colorProfile->toLinear(srcColor);
+        else
+            srcColor = 
colorProfile->toLinear(srcColor.unpremultiplied()).premultiplied();
+    }
 
     alignas(8) QRgba64 buffer[BufferSize];
     const DestFetchProc64 destFetch64 = destFetchProc64[rasterBuffer->format];
@@ -5804,8 +5792,12 @@ static void qt_alphamapblit_generic(QRasterBuffer 
*rasterBuffer,
         colorProfile = 
QGuiApplicationPrivate::instance()->colorProfileForA8Text();
 
     QRgba64 srcColor = color;
-    if (colorProfile && color.isOpaque())
-        srcColor = colorProfile->toLinear(srcColor);
+    if (colorProfile) {
+        if (color.isOpaque())
+            srcColor = colorProfile->toLinear(srcColor);
+        else
+            srcColor = 
colorProfile->toLinear(srcColor.unpremultiplied()).premultiplied();
+    }
 
     quint32 buffer[BufferSize];
     const DestFetchProc destFetch = destFetchProc[rasterBuffer->format];
@@ -5880,7 +5872,7 @@ void qt_alphamapblit_quint16(QRasterBuffer *rasterBuffer,
                              int mapWidth, int mapHeight, int mapStride,
                              const QClipData *clip, bool useGammaCorrection)
 {
-    if (useGammaCorrection || !color.isOpaque()) {
+    if (useGammaCorrection) {
         qt_alphamapblit_generic(rasterBuffer, x, y, color, map, mapWidth, 
mapHeight, mapStride, clip, useGammaCorrection);
         return;
     }
@@ -5939,8 +5931,12 @@ static void qt_alphamapblit_argb32(QRasterBuffer 
*rasterBuffer,
         colorProfile = 
QGuiApplicationPrivate::instance()->colorProfileForA8Text();
 
     QRgba64 srcColor = color;
-    if (colorProfile && color.isOpaque())
-        srcColor = colorProfile->toLinear(srcColor);
+    if (colorProfile) {
+        if (color.isOpaque())
+            srcColor = colorProfile->toLinear(srcColor);
+        else
+            srcColor = 
colorProfile->toLinear(srcColor.unpremultiplied()).premultiplied();
+    }
 
     if (!clip) {
         quint32 *dest = reinterpret_cast<quint32*>(rasterBuffer->scanLine(y)) 
+ x;
@@ -6035,59 +6031,48 @@ static inline QRgb rgbBlend(QRgb d, QRgb s, uint 
rgbAlpha)
 #endif
 }
 
-static inline void alphargbblend_argb32(quint32 *dst, uint coverage, const 
QRgba64 &srcLinear, quint32 src, const QColorTrcLut *colorProfile)
+#if QT_CONFIG(raster_64bit)
+static inline void alphargbblend_generic(uint coverage, QRgba64 *dest, int x, 
const QRgba64 &srcLinear, const QRgba64 &src, const QColorTrcLut *colorProfile)
 {
     if (coverage == 0xff000000) {
         // nothing
-    } else if (coverage == 0xffffffff && qAlpha(src) == 255) {
-        blend_pixel(*dst, src);
-    } else if (!colorProfile) {
-        *dst = rgbBlend(*dst, src, coverage);
-    } else if (*dst < 0xff000000) {
-        // Give up and do a naive gray alphablend. Needed to deal with ARGB32 
and invalid ARGB32_premultiplied, see QTBUG-60571
-        blend_pixel(*dst, src, qRgbAvg(coverage));
-    } else if (srcLinear.isOpaque()) {
-        rgbBlendPixel(dst, coverage, srcLinear, colorProfile);
+    } else if (coverage == 0xffffffff) {
+        dest[x] = src;
     } else {
-        // First do naive blend with text-color
-        QRgb s = *dst;
-        blend_pixel(s, src);
-        // Then gamma-corrected blend with glyph shape
-        rgbBlendPixel(dst, coverage, colorProfile->toLinear64(s), 
colorProfile);
+        QRgba64 dstColor = dest[x];
+        if (dstColor.isOpaque()) {
+            if (colorProfile)
+                dstColor = colorProfile->toLinear(dstColor);
+            dstColor = rgbBlend(dstColor, srcLinear, coverage);
+            if (colorProfile)
+                dstColor = colorProfile->fromLinear(dstColor);
+            dest[x] = dstColor;
+        } else {
+            // Do a gray alphablend.
+            alphamapblend_generic(qRgbAvg(coverage), dest, x, srcLinear, src, 
colorProfile);
+        }
     }
 }
+#endif
 
-#if QT_CONFIG(raster_64bit)
-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;
-
-    QRgba64 blend = rgbBlend(dlinear, slinear, coverage);
-
-    dst = colorProfile ? colorProfile->fromLinear(blend) : blend;
-}
-
-static inline void alphargbblend_generic(uint coverage, QRgba64 *dest, int x, 
const QRgba64 &srcLinear, const QRgba64 &src, const QColorTrcLut *colorProfile)
+static inline void alphargbblend_argb32(quint32 *dst, uint coverage, const 
QRgba64 &srcLinear, quint32 src, const QColorTrcLut *colorProfile)
 {
     if (coverage == 0xff000000) {
         // nothing
     } else if (coverage == 0xffffffff) {
-        blend_pixel(dest[x], src);
-    } else if (!dest[x].isOpaque()) {
-        // Do a gray alphablend.
-        alphamapblend_generic(qRgbAvg(coverage), dest, x, srcLinear, src, 
colorProfile);
-    } else if (src.isOpaque()) {
-        rgbBlendPixel(dest[x], coverage, srcLinear, colorProfile);
-    } else {
-        // First do naive blend with text-color
-        QRgba64 s = dest[x];
-        blend_pixel(s, src);
-        // Then gamma-corrected blend with glyph shape
-        rgbBlendPixel(dest[x], coverage, colorProfile->toLinear(s), 
colorProfile);
+        *dst = src;
+    } else if (*dst < 0xff000000) {
+        // Give up and do a naive gray alphablend. Needed to deal with ARGB32 
and invalid ARGB32_premultiplied, see QTBUG-60571
+        const int a = qRgbAvg(coverage);
+        *dst = INTERPOLATE_PIXEL_255(src, a, *dst, 255 - a);
+    } else if (!colorProfile) {
+        *dst = rgbBlend(*dst, src, coverage);
+    } else  {
+        rgbBlendPixel(dst, coverage, srcLinear, colorProfile);
     }
 }
 
+#if QT_CONFIG(raster_64bit)
 static void qt_alphargbblit_generic(QRasterBuffer *rasterBuffer,
                                     int x, int y, const QRgba64 &color,
                                     const uint *src, int mapWidth, int 
mapHeight, int srcStride,
@@ -6102,8 +6087,12 @@ static void qt_alphargbblit_generic(QRasterBuffer 
*rasterBuffer,
         colorProfile = 
QGuiApplicationPrivate::instance()->colorProfileForA32Text();
 
     QRgba64 srcColor = color;
-    if (colorProfile && color.isOpaque())
-        srcColor = colorProfile->toLinear(srcColor);
+    if (colorProfile) {
+        if (color.isOpaque())
+            srcColor = colorProfile->toLinear(srcColor);
+        else
+            srcColor = 
colorProfile->toLinear(srcColor.unpremultiplied()).premultiplied();
+    }
 
     alignas(8) QRgba64 buffer[BufferSize];
     const DestFetchProc64 destFetch64 = destFetchProc64[rasterBuffer->format];
@@ -6175,8 +6164,12 @@ static void qt_alphargbblit_generic(QRasterBuffer 
*rasterBuffer,
         colorProfile = 
QGuiApplicationPrivate::instance()->colorProfileForA32Text();
 
     QRgba64 srcColor = color;
-    if (colorProfile && color.isOpaque())
-        srcColor = colorProfile->toLinear(srcColor);
+    if (colorProfile) {
+        if (color.isOpaque())
+            srcColor = colorProfile->toLinear(srcColor);
+        else
+            srcColor = 
colorProfile->toLinear(srcColor.unpremultiplied()).premultiplied();
+    }
 
     quint32 buffer[BufferSize];
     const DestFetchProc destFetch = destFetchProc[rasterBuffer->format];
@@ -6249,8 +6242,12 @@ static void qt_alphargbblit_argb32(QRasterBuffer 
*rasterBuffer,
         colorProfile = 
QGuiApplicationPrivate::instance()->colorProfileForA32Text();
 
     QRgba64 srcColor = color;
-    if (colorProfile && color.isOpaque())
-        srcColor = colorProfile->toLinear(srcColor);
+    if (colorProfile) {
+        if (color.isOpaque())
+            srcColor = colorProfile->toLinear(srcColor);
+        else
+            srcColor = 
colorProfile->toLinear(srcColor.unpremultiplied()).premultiplied();
+    }
 
     if (!clip) {
         quint32 *dst = reinterpret_cast<quint32*>(rasterBuffer->scanLine(y)) + 
x;
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index dd42b96d79..9c5d525722 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -671,8 +671,6 @@ static Q_ALWAYS_INLINE void blend_pixel(quint32 &dst, const 
quint32 src)
 
 static Q_ALWAYS_INLINE void blend_pixel(quint32 &dst, const quint32 src, const 
int const_alpha)
 {
-    if (const_alpha == 255)
-        return blend_pixel(dst, src);
     if (src != 0) {
         const quint32 s = BYTE_MUL(src, const_alpha);
         dst = s + BYTE_MUL(dst, qAlpha(~s));
diff --git a/src/gui/painting/qpaintengine_raster.cpp 
b/src/gui/painting/qpaintengine_raster.cpp
index 40c822076b..87312b920a 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -842,8 +842,8 @@ void QRasterPaintEngine::updateRasterState()
         const QPainter::CompositionMode mode = s->composition_mode;
         s->flags.fast_text = (s->penData.type == QSpanData::Solid)
                        && s->intOpacity == 256
-                       && (mode == QPainter::CompositionMode_SourceOver
-                           || (mode == QPainter::CompositionMode_Source
+                       && (mode == QPainter::CompositionMode_Source
+                           || (mode == QPainter::CompositionMode_SourceOver
                                && s->penData.solidColor.isOpaque()));
     }
 
diff --git a/src/gui/painting/qrgba64_p.h b/src/gui/painting/qrgba64_p.h
index d145dbfbea..ca879de27c 100644
--- a/src/gui/painting/qrgba64_p.h
+++ b/src/gui/painting/qrgba64_p.h
@@ -284,8 +284,6 @@ static Q_ALWAYS_INLINE void blend_pixel(QRgba64 &dst, 
QRgba64 src)
 
 static Q_ALWAYS_INLINE void blend_pixel(QRgba64 &dst, QRgba64 src, const int 
const_alpha)
 {
-    if (const_alpha == 255)
-        return blend_pixel(dst, src);
     if (!src.isTransparent()) {
         src = multiplyAlpha255(src, const_alpha);
         dst = src + multiplyAlpha65535(dst, 65535 - src.alpha());
-- 
2.23.0

++++++ qtbase-everywhere-src-5.13.1.tar.xz -> 
qtbase-everywhere-src-5.14.0.tar.xz ++++++
/work/SRC/openSUSE:Factory/libqt5-qtbase/qtbase-everywhere-src-5.13.1.tar.xz 
/work/SRC/openSUSE:Factory/.libqt5-qtbase.new.26092/qtbase-everywhere-src-5.14.0.tar.xz
 differ: char 25, line 1


Reply via email to