diff options
Diffstat (limited to 'source/l/qt5/patches')
29 files changed, 0 insertions, 1975 deletions
diff --git a/source/l/qt5/patches/platformplugin-install-path-fix.patch b/source/l/qt5/patches/platformplugin-install-path-fix.patch deleted file mode 100644 index db9b33b9..00000000 --- a/source/l/qt5/patches/platformplugin-install-path-fix.patch +++ /dev/null @@ -1,15 +0,0 @@ -See https://bugs.webkit.org/show_bug.cgi?id=117077 - -diff -Naur qt-everywhere-opensource-src-5.0.2.orig/qtwebkit/Source/WebKit/qt/examples/platformplugin/platformplugin.pro qt-everywhere-opensource-src-5.0.2/qtwebkit/Source/WebKit/qt/examples/platformplugin/platformplugin.pro ---- qt-everywhere-opensource-src-5.0.2.orig/qtwebkit/Source/WebKit/qt/examples/platformplugin/platformplugin.pro 2013-04-09 00:11:38.000000000 +0000 -+++ qt-everywhere-opensource-src-5.0.2/qtwebkit/Source/WebKit/qt/examples/platformplugin/platformplugin.pro 2013-05-31 01:18:29.157175082 +0000 -@@ -20,7 +20,8 @@ - } - } - --DESTDIR = $$[QT_INSTALL_PLUGINS]/webkit -+target.path = $$[QT_INSTALL_PLUGINS]/webkit -+INSTALLS += target - - SOURCES += \ - WebPlugin.cpp \ diff --git a/source/l/qt5/patches/qt5.alsa.patch b/source/l/qt5/patches/qt5.alsa.patch deleted file mode 100644 index 892431b3..00000000 --- a/source/l/qt5/patches/qt5.alsa.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- qt-everywhere-opensource-src-5.6.0/qtbase/config.tests/unix/alsa/alsatest.cpp.orig 2016-02-29 08:15:48.203031809 +0000 -+++ qt-everywhere-opensource-src-5.6.0/qtbase/config.tests/unix/alsa/alsatest.cpp 2016-02-29 08:16:39.712811962 +0000 -@@ -32,7 +32,7 @@ - ****************************************************************************/ - - #include <alsa/asoundlib.h> --#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10)) -+#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10))) - #error "Alsa version found too old, require >= 1.0.10" - #endif - diff --git a/source/l/qt5/patches/qt5.cr206850.patch b/source/l/qt5/patches/qt5.cr206850.patch deleted file mode 100644 index 1fb71df1..00000000 --- a/source/l/qt5/patches/qt5.cr206850.patch +++ /dev/null @@ -1,43 +0,0 @@ -The latest MariaDB versions aren't caught properly by the checks in Qt, which -may cause a regression to appear (regression, because it was already fixed in -Qt by Dan Vratil): this manifests itself in Akonadi losing its connection to -the database if running for long periods of time. - -Until this is fixed in Qt, you may want to apply this patch in your packages: - -https://codereview.qt-project.org/#/c/206850/ - -From 64588c9bae92ef79f9ca5e87653ffb0962691d0d Mon Sep 17 00:00:00 2001 -From: Andy Shaw <andy.shaw@qt.io> -Date: Wed, 27 Sep 2017 09:23:10 +0200 -Subject: [PATCH] Extend the MariaDB define check to cover the later versions too - -Change-Id: Ide89b4e07feb116bf152cbf3f5630d313e8ba0f1 ---- - src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -index 6e428fb..b2d3e85 100644 ---- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -@@ -1159,14 +1159,14 @@ static void qLibraryInit() - # endif // MYSQL_VERSION_ID - #endif // Q_NO_MYSQL_EMBEDDED - --#ifdef MARIADB_BASE_VERSION -+#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_VERSION_ID) - qAddPostRoutine(mysql_server_end); - #endif - } - - static void qLibraryEnd() - { --#if !defined(MARIADB_BASE_VERSION) -+#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_VERSION_ID) - # if !defined(Q_NO_MYSQL_EMBEDDED) - # if MYSQL_VERSION_ID > 40000 - # if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003 --- -2.7.4 - diff --git a/source/l/qt5/patches/qt5.delayed_highlight.patch b/source/l/qt5/patches/qt5.delayed_highlight.patch deleted file mode 100644 index 201179bb..00000000 --- a/source/l/qt5/patches/qt5.delayed_highlight.patch +++ /dev/null @@ -1,72 +0,0 @@ -From f8f0f3eef1151c9377a5c76ccfa6432e930e1307 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> -Date: Mon, 14 Jan 2019 10:37:42 +0100 -Subject: QSyntaxHighlighter: cancel delayed highlight if done manually -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It was an implicit effect before which stopped working after -dec7961709c90f6977d2447f7fa6c6625af41cb2. Reintroduce it as some -projects used this side-effect as a way to abort the initial -highlighting. - -Change-Id: I5340ee9882a242bc8b5f7f843f1cfe793a65d357 -Reviewed-by: J?drzej Nowacki <jedrzej.nowacki@qt.io> ---- - src/gui/text/qsyntaxhighlighter.cpp | 1 + - .../qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp | 19 +++++++++++++++++++ - 2 files changed, 20 insertions(+) - -diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp -index b09f8b565a..0e07b69868 100644 ---- a/src/gui/text/qsyntaxhighlighter.cpp -+++ b/src/gui/text/qsyntaxhighlighter.cpp -@@ -376,6 +376,7 @@ void QSyntaxHighlighter::rehighlight() - - QTextCursor cursor(d->doc); - d->rehighlight(cursor, QTextCursor::End); -+ d->rehighlightPending = false; // user manually did a full rehighlight - } - - /*! -diff --git a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp -index 9d6ce78b24..c683ecd424 100644 ---- a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp -+++ b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp -@@ -82,6 +82,7 @@ private slots: - void preservePreeditArea(); - void task108530(); - void avoidUnnecessaryRehighlight(); -+ void avoidUnnecessaryDelayedRehighlight(); - void noContentsChangedDuringHighlight(); - void rehighlight(); - void rehighlightBlock(); -@@ -478,6 +479,24 @@ void tst_QSyntaxHighlighter::avoidUnnecessaryRehighlight() - QTRY_VERIFY(!hl->highlighted); - } - -+void tst_QSyntaxHighlighter::avoidUnnecessaryDelayedRehighlight() -+{ -+ // Having text in the document before creating the highlighter starts the delayed rehighlight -+ cursor.insertText("Hello World"); -+ -+ TestHighlighter *hl = new TestHighlighter(doc); -+ QVERIFY(!hl->highlighted); -+ -+ hl->rehighlight(); -+ QVERIFY(hl->highlighted); -+ -+ hl->highlighted = false; -+ // Process events, including delayed rehighlight emission -+ QCoreApplication::processEvents(); -+ // Should be cancelled and no extra rehighlight should be done -+ QVERIFY(!hl->highlighted); -+} -+ - void tst_QSyntaxHighlighter::noContentsChangedDuringHighlight() - { - QVector<QTextLayout::FormatRange> formats; --- -cgit v1.2.1 - diff --git a/source/l/qt5/patches/qt5.glibc224.patch b/source/l/qt5/patches/qt5.glibc224.patch deleted file mode 100644 index 773781ac..00000000 --- a/source/l/qt5/patches/qt5.glibc224.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b12ffcd411d4776f7120ccecb3be34344d930d2b Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> -Date: Tue, 9 Aug 2016 16:21:29 +0200 -Subject: Do not depend on Linux 4.5 - -Avoid using MADV_FREE that was only recently added to Linux. It will fail when -run on older Linux kernels. - -Change-Id: I9b0369fb31402f088b2327c12f70dd39f5e4c8c0 -Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> ---- - chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp -index 121b687..be7c3b9 100644 ---- a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp -+++ b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp -@@ -39,6 +39,11 @@ - - #include <sys/mman.h> - -+#if OS(LINUX) && defined(MADV_FREE) -+// Added in Linux 4.5, but we don't want to depend on 4.5 at runtime -+#undef MADV_FREE -+#endif -+ - #ifndef MADV_FREE - #define MADV_FREE MADV_DONTNEED - #endif --- -cgit v1.0-4-g1e03 - diff --git a/source/l/qt5/patches/qt5.private-includes.patch b/source/l/qt5/patches/qt5.private-includes.patch deleted file mode 100644 index 3ef8ebe4..00000000 --- a/source/l/qt5/patches/qt5.private-includes.patch +++ /dev/null @@ -1,53 +0,0 @@ -# Taken from http://code.qt.io/cgit/qt/qtbase.git/patch/?id=67aa365d -# ------------------------------------------------------------------ - -From 67aa365d41ebfe082b4efcfd725e4d5f08be678c Mon Sep 17 00:00:00 2001 -From: Ulf Hermann <ulf.hermann@qt.io> -Date: Wed, 25 Apr 2018 12:48:21 +0200 -Subject: Do emit CMake declarations for existing private headers - -We need to make sure we don't emit CMake declarations for private -headers if those headers are absent. However, most of the time we have -private headers and should add them. - -Task-number: QTBUG-37417 -Change-Id: I639eb93d008de27928dedac540894af70c1883b9 -Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> ---- - mkspecs/features/create_cmake.prf | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf -index 66acedef55..2ed708e085 100644 ---- a/mkspecs/features/create_cmake.prf -+++ b/mkspecs/features/create_cmake.prf -@@ -28,9 +28,13 @@ CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake - - CMAKE_MODULE_NAME = $$cmakeModuleName($${MODULE}) - -+!generated_privates { -+ isEmpty(SYNCQT.INJECTED_PRIVATE_HEADER_FILES):isEmpty(SYNCQT.PRIVATE_HEADER_FILES): \ -+ CMAKE_NO_PRIVATE_INCLUDES = true -+} -+ - split_incpath { - CMAKE_ADD_SOURCE_INCLUDE_DIRS = true -- CMAKE_NO_PRIVATE_INCLUDES = true # Don't add private includes in the build dir which don't exist - CMAKE_SOURCE_INCLUDES = \ - $$cmakeTargetPaths($$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}) - CMAKE_SOURCE_PRIVATE_INCLUDES = \ -@@ -53,10 +57,6 @@ contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { - CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True - } - --isEmpty(QT.$${MODULE}_private.includes)| \ -- !exists($$first(QT.$${MODULE}_private.includes)): \ -- CMAKE_NO_PRIVATE_INCLUDES = true -- - CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) - contains(CMAKE_LIB_DIR,"^\\.\\./.*") { - CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ --- -cgit v1.1-6-g87c4 - - diff --git a/source/l/qt5/patches/qt5.qlockfile-deadlock.patch b/source/l/qt5/patches/qt5.qlockfile-deadlock.patch deleted file mode 100644 index e51d5ad0..00000000 --- a/source/l/qt5/patches/qt5.qlockfile-deadlock.patch +++ /dev/null @@ -1,116 +0,0 @@ -# Taken from: -# https://projects.archlinux.org/svntogit/packages.git/plain/trunk/qlockfile-deadlock.patch?h=packages/qt5 -# QTBUG-44771 -# ---------------------------------------------------------------------------- -From f58e882b7594c59b6050d3c87562fcf836d10f60 Mon Sep 17 00:00:00 2001 -From: Olivier Goffart <ogoffart@woboq.com> -Date: Tue, 14 Apr 2015 10:58:26 +0200 -Subject: QLockFile: fix deadlock when the lock file is corrupted - -[ChangeLog][QtCore][QLockFile] Fixed a deadlock when the lock file -is corrupted. - -Task-number: QTBUG-44771 -Change-Id: Ic490b09d70ff1cc1733b64949889a73720b2d0f3 -Reviewed-by: David Faure <david.faure@kdab.com> ---- - src/corelib/io/qlockfile_unix.cpp | 10 +++++----- - src/corelib/io/qlockfile_win.cpp | 22 +++++++++++----------- - tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp | 17 +++++++++++++++++ - 3 files changed, 33 insertions(+), 16 deletions(-) - -diff --git a/qtbase/src/corelib/io/qlockfile_unix.cpp b/qtbase/src/corelib/io/qlockfile_unix.cpp -index bf1015a..dc9f8f7 100644 ---- a/qtbase/src/corelib/io/qlockfile_unix.cpp -+++ b/qtbase/src/corelib/io/qlockfile_unix.cpp -@@ -181,11 +181,11 @@ bool QLockFilePrivate::isApparentlyStale() const - { - qint64 pid; - QString hostname, appname; -- if (!getLockInfo(&pid, &hostname, &appname)) -- return false; -- if (hostname.isEmpty() || hostname == QString::fromLocal8Bit(localHostName())) { -- if (::kill(pid, 0) == -1 && errno == ESRCH) -- return true; // PID doesn't exist anymore -+ if (getLockInfo(&pid, &hostname, &appname)) { -+ if (hostname.isEmpty() || hostname == QString::fromLocal8Bit(localHostName())) { -+ if (::kill(pid, 0) == -1 && errno == ESRCH) -+ return true; // PID doesn't exist anymore -+ } - } - const qint64 age = QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime()); - return staleLockTime > 0 && age > staleLockTime; -diff --git a/qtbase/src/corelib/io/qlockfile_win.cpp b/qtbase/src/corelib/io/qlockfile_win.cpp -index f9f2909..3587c7b 100644 ---- a/qtbase/src/corelib/io/qlockfile_win.cpp -+++ b/qtbase/src/corelib/io/qlockfile_win.cpp -@@ -115,21 +115,21 @@ bool QLockFilePrivate::isApparentlyStale() const - { - qint64 pid; - QString hostname, appname; -- if (!getLockInfo(&pid, &hostname, &appname)) -- return false; - - // On WinRT there seems to be no way of obtaining information about other - // processes due to sandboxing - #ifndef Q_OS_WINRT -- if (hostname == QString::fromLocal8Bit(localHostName())) { -- HANDLE procHandle = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); -- if (!procHandle) -- return true; -- // We got a handle but check if process is still alive -- DWORD dwR = ::WaitForSingleObject(procHandle, 0); -- ::CloseHandle(procHandle); -- if (dwR == WAIT_TIMEOUT) -- return true; -+ if (getLockInfo(&pid, &hostname, &appname)) { -+ if (hostname == QString::fromLocal8Bit(localHostName())) { -+ HANDLE procHandle = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); -+ if (!procHandle) -+ return true; -+ // We got a handle but check if process is still alive -+ DWORD dwR = ::WaitForSingleObject(procHandle, 0); -+ ::CloseHandle(procHandle); -+ if (dwR == WAIT_TIMEOUT) -+ return true; -+ } - } - #endif // !Q_OS_WINRT - const qint64 age = QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime()); -diff --git a/qtbase/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp b/qtbase/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp -index 77bef94..12bea67 100644 ---- a/qtbase/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp -+++ b/qtbase/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp -@@ -58,6 +58,7 @@ private slots: - void staleLongLockFromBusyProcess(); - void staleLockRace(); - void noPermissions(); -+ void corruptedLockFile(); - - public: - QString m_helperApp; -@@ -415,5 +416,21 @@ void tst_QLockFile::noPermissions() - QCOMPARE(int(lockFile.error()), int(QLockFile::PermissionError)); - } - -+void tst_QLockFile::corruptedLockFile() -+{ -+ const QString fileName = dir.path() + "/corruptedLockFile"; -+ -+ { -+ // Create a empty file. Typically the result of a computer crash or hard disk full. -+ QFile file(fileName); -+ QVERIFY(file.open(QFile::WriteOnly)); -+ } -+ -+ QLockFile secondLock(fileName); -+ secondLock.setStaleLockTime(100); -+ QVERIFY(secondLock.tryLock(10000)); -+ QCOMPARE(int(secondLock.error()), int(QLockFile::NoError)); -+} -+ - QTEST_MAIN(tst_QLockFile) - #include "tst_qlockfile.moc" --- -cgit v0.11.0 - diff --git a/source/l/qt5/patches/qt5.qt5uitoolsconfig.patch b/source/l/qt5/patches/qt5.qt5uitoolsconfig.patch deleted file mode 100644 index 1a0da5b9..00000000 --- a/source/l/qt5/patches/qt5.qt5uitoolsconfig.patch +++ /dev/null @@ -1,17 +0,0 @@ -The fix for https://bugreports.qt.io/browse/QTBUG-76244 was not complete. -Further quoting is needed to deal with empty variables. --- Eric Hameleers <alien@slackware.com> - ---- qt-everywhere-src-5.13.0/qtbase/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in.orig 2019-06-13 06:18:18.000000000 +0200 -+++ qt-everywhere-src-5.13.0/qtbase/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in 2019-07-09 19:37:15.253291684 +0200 -@@ -57,8 +57,8 @@ - - if(EXISTS \"${prl_file_location}\") - file(STRINGS \"${prl_file_location}\" _prl_strings REGEX \"QMAKE_PRL_LIBS[ \\t]*=\") -- string(REGEX REPLACE \"QMAKE_PRL_LIBS[ \\t]*=[ \\t]*([^\\n]*)\" \"\\\\1\" _static_depends ${_prl_strings}) -- string(REGEX REPLACE \"[ \\t]+\" \";\" _static_depends ${_static_depends}) -+ string(REGEX REPLACE \"QMAKE_PRL_LIBS[ \\t]*=[ \\t]*([^\\n]*)\" \"\\\\1\" _static_depends \"${_prl_strings}\") -+ string(REGEX REPLACE \"[ \\t]+\" \";\" _static_depends \"${_static_depends}\") - string(REGEX REPLACE \"[ \\t]+\" \";\" _standard_libraries \"${CMAKE_CXX_STANDARD_LIBRARIES}\") - set(_search_paths) - string(REPLACE \"\\$\\$[QT_INSTALL_LIBS]\" \"${_qt5_install_libs}\" _static_depends \"${_static_depends}\") diff --git a/source/l/qt5/patches/qt5.qtbug-49061.patch b/source/l/qt5/patches/qt5.qtbug-49061.patch deleted file mode 100644 index d006edbe..00000000 --- a/source/l/qt5/patches/qt5.qtbug-49061.patch +++ /dev/null @@ -1,80 +0,0 @@ -# -# https://github.com/qt/qtbase/commit/494376f9.patch -# -From 494376f980e96339b6f1eff7c41336ca4d853065 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Thu, 12 Nov 2015 10:14:51 -0800 -Subject: [PATCH] Stop unloading plugins in QPluginLoader and QFactoryLoader - -QPluginLoader hasn't unloaded in its destructor since Qt 5.0, but we -missed the equivalent code in QFactoryLoader (which bypasses -QPluginLoader). Besides, QPluginLoader::unload() was still doing -unloading, which it won't anymore. - -Not unloading plugins is Qt's policy, as decided during the 5.0 -development process and reaffirmed now in 5.6. This is due to static -data in plugins leaking out and remaining in use past the unloading of -the plugin, causing crashes. - -This does not affect QLibrary and QLibrary::unload(). Those are meant -for non-Qt loadable modules, so unloading them may be safe. - -Task-number: QTBUG-49061 -Discussed-on: http://lists.qt-project.org/pipermail/development/2015-November/023681.html -Change-Id: I461e9fc7199748faa187ffff1416070f138df8db -Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> -Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> ---- - src/corelib/plugin/qfactoryloader.cpp | 6 ++++-- - src/corelib/plugin/qpluginloader.cpp | 5 +++-- - 2 files changed, 7 insertions(+), 4 deletions(-) - -diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp -index 53b38c3..c820d53 100644 ---- a/src/corelib/plugin/qfactoryloader.cpp -+++ b/src/corelib/plugin/qfactoryloader.cpp -@@ -203,10 +203,12 @@ void QFactoryLoader::update() - ++keyUsageCount; - } - } -- if (keyUsageCount || keys.isEmpty()) -+ if (keyUsageCount || keys.isEmpty()) { -+ library->setLoadHints(QLibrary::PreventUnloadHint); // once loaded, don't unload - d->libraryList += library; -- else -+ } else { - library->release(); -+ } - } - } - #else -diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp -index 62067c7..4752f69 100644 ---- a/src/corelib/plugin/qpluginloader.cpp -+++ b/src/corelib/plugin/qpluginloader.cpp -@@ -154,6 +154,7 @@ QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent) - : QObject(parent), d(0), did_load(false) - { - setFileName(fileName); -+ setLoadHints(QLibrary::PreventUnloadHint); - } - - /*! -@@ -348,7 +349,7 @@ static QString locatePlugin(const QString& fileName) - void QPluginLoader::setFileName(const QString &fileName) - { - #if defined(QT_SHARED) -- QLibrary::LoadHints lh; -+ QLibrary::LoadHints lh = QLibrary::PreventUnloadHint; - if (d) { - lh = d->loadHints(); - d->release(); -@@ -394,7 +395,7 @@ QString QPluginLoader::errorString() const - \brief Give the load() function some hints on how it should behave. - - You can give hints on how the symbols in the plugin are -- resolved. By default, none of the hints are set. -+ resolved. By default since Qt 5.7, QLibrary::PreventUnloadHint is set. - - See the documentation of QLibrary::loadHints for a complete - description of how this property works. diff --git a/source/l/qt5/patches/qt5.qtbug-49452.patch b/source/l/qt5/patches/qt5.qtbug-49452.patch deleted file mode 100644 index 4549ff16..00000000 --- a/source/l/qt5/patches/qt5.qtbug-49452.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 6f423555eba55ccdf7287071e10576bc1b687fd2 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -Date: Mon, 1 Aug 2016 13:39:53 +0200 -Subject: [PATCH] REG: Fix unwanted cache flush in Freetype engine - -The Freetype cache was almost completely disabled by -134c6db8587a8ce156d4fa31ffa62605821851b2 because after that -change, the lockedAlphaMapForGlyph() function would no longer -cut off early for empty glyphs like spaces, but rather go -through all alpha map functions before it realized that there -was nothing to render. This would in turn invalidate the cache -for every empty glyph, causing all glyphs to be rerendered for -every isolated word. - -This change adds back a cut off. This is only needed in the -lockedAlphaMapForGlyph() function, since the superclass implementation -of the other alpha map functions already contains a cut off for -width/height == 0. - -[ChangeLog][Qt Gui][Text] Fixed a performance regression in Freetype -engine that was introduced in Qt 5.5. - -Change-Id: I381285939909e99cc5fb5f3497fecf9fa871f29a -Task-number: QTBUG-49452 -Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> ---- - src/gui/text/qfontengine_ft.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp -index 4de41df..7c878da 100644 ---- a/src/gui/text/qfontengine_ft.cpp -+++ b/src/gui/text/qfontengine_ft.cpp -@@ -1716,7 +1716,7 @@ glyph_metrics_t QFontEngineFT::alphaMapBoundingBox(glyph_t glyph, QFixed subPixe - - static inline QImage alphaMapFromGlyphData(QFontEngineFT::Glyph *glyph, QFontEngine::GlyphFormat glyphFormat) - { -- if (glyph == Q_NULLPTR) -+ if (glyph == Q_NULLPTR || glyph->height == 0 || glyph->width == 0) - return QImage(); - - QImage::Format format = QImage::Format_Invalid; -@@ -1764,11 +1764,15 @@ QImage *QFontEngineFT::lockedAlphaMapForGlyph(glyph_t glyphIndex, QFixed subPixe - - currentlyLockedAlphaMap = alphaMapFromGlyphData(glyph, neededFormat); - -+ const bool glyphHasGeometry = glyph != Q_NULLPTR && glyph->height != 0 && glyph->width != 0; - if (!cacheEnabled && glyph != &emptyGlyph) { - currentlyLockedAlphaMap = currentlyLockedAlphaMap.copy(); - delete glyph; - } - -+ if (!glyphHasGeometry) -+ return Q_NULLPTR; -+ - if (currentlyLockedAlphaMap.isNull()) - return QFontEngine::lockedAlphaMapForGlyph(glyphIndex, subPixelPosition, neededFormat, t, offset); - diff --git a/source/l/qt5/patches/qt5.qtbug-51621.patch b/source/l/qt5/patches/qt5.qtbug-51621.patch deleted file mode 100644 index 187a3d78..00000000 --- a/source/l/qt5/patches/qt5.qtbug-51621.patch +++ /dev/null @@ -1,39 +0,0 @@ -build with explicitlib after all - -unlike speculated in 2fe363514, this is not a workaround at all: it -causes that libraries' public link interfaces (LIBS) are exported in the -first place. unlike with staticlib, this does not export LIBS_PRIVATE, -so it wouldn't even be a particularly effective workaround for rpath -brokenness anyway. - -the problem was pretty well hidden by the qt module system, which at the -level of libraries is pretty redundant with the .prl file handling, -which shows just how stupid the whole "design" is. - -unlike before, we now enable explicitlib for all libraries, not just qt -modules - we enable create_prl for all of them as well, after all. - -an immediate effect of this change is that it fixes linking on RaspPI: -the qtcore headers make the user code require linking libatomic, so we -must add it to our public link interface. - -Task-number: QTBUG-51621 -Change-Id: I5742c88694db8e8a9b79d17222dc6df2b38e5ab2 - -X-Git-Url: https://codereview.qt-project.org/gitweb?p=qt%2Fqtbase.git;a=blobdiff_plain;f=mkspecs%2Ffeatures%2Fqt_build_config.prf;h=b3081b960ec192c3421d7a1c2bd5a628f0ca8455;hp=518fd93f0457c6060721c38ad8b6a0286407e562;hb=268e7ee9778de79d2485bdd028721ec7adbc1324;hpb=495e8c205424253186bef47421de63534d23dd59 - -diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf -index 518fd93..b3081b9 100644 ---- a/mkspecs/features/qt_build_config.prf -+++ b/mkspecs/features/qt_build_config.prf -@@ -72,6 +72,10 @@ CONFIG += \ - # However, testcases should be still built with exceptions. - exceptions_off testcase_exceptions - -+# Under Windows, this is neither necessary (transitive deps are automatically -+# resolved), nor functional (.res files end up in .prl files and break things). -+unix: CONFIG += explicitlib -+ - - defineTest(qtBuildPart) { - bp = $$eval($$upper($$section(_QMAKE_CONF_, /, -2, -2))_BUILD_PARTS) diff --git a/source/l/qt5/patches/qt5.qtbug-51648.patch b/source/l/qt5/patches/qt5.qtbug-51648.patch deleted file mode 100644 index 279839b0..00000000 --- a/source/l/qt5/patches/qt5.qtbug-51648.patch +++ /dev/null @@ -1,88 +0,0 @@ -From b024fbe83863fc57364a52c717d5b43d654bdb5d Mon Sep 17 00:00:00 2001 -From: Weng Xuetian <wengxt@gmail.com> -Date: Sat, 5 Mar 2016 12:23:21 -0800 -Subject: [PATCH] QtDBus: clean up signal hooks and object tree in - closeConnection - -If a QObject is added or passed as receiver to QDBusConnection::connect() -and it is managed by Q_GLOBAL_STATIC or similar mechanism, it is -possible that when that its destructor is called after the dbus daemon -thread ends. In that case, QObject::destroyed connected via -Qt::BlockingQueuedConnection to QDBusConnectionPrivate will cause dead -lock since the thread is no longer processing events. - -Task-number: QTBUG-51648 -Change-Id: I1a1810a6d6d0234af0269d5f3fc1f54101bf1547 ---- - src/dbus/qdbusconnection_p.h | 1 + - src/dbus/qdbusintegrator.cpp | 28 +++++++++++++++++++++++++++- - 2 files changed, 28 insertions(+), 1 deletion(-) - -diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h -index c77daf7..565eb83 100644 ---- a/src/dbus/qdbusconnection_p.h -+++ b/src/dbus/qdbusconnection_p.h -@@ -254,6 +254,7 @@ private: - const QVector<int> &metaTypes, int slotIdx); - - SignalHookHash::Iterator removeSignalHookNoLock(SignalHookHash::Iterator it); -+ void disconnectObjectTree(ObjectTreeNode &node); - - bool isServiceRegisteredByThread(const QString &serviceName); - -diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp -index cd44861..a3cd47b 100644 ---- a/src/dbus/qdbusintegrator.cpp -+++ b/src/dbus/qdbusintegrator.cpp -@@ -1030,7 +1030,6 @@ QDBusConnectionPrivate::~QDBusConnectionPrivate() - qPrintable(name)); - - closeConnection(); -- rootNode.children.clear(); // free resources - qDeleteAll(cachedMetaObjects); - - if (mode == ClientMode || mode == PeerMode) { -@@ -1052,6 +1051,20 @@ QDBusConnectionPrivate::~QDBusConnectionPrivate() - } - } - -+void QDBusConnectionPrivate::disconnectObjectTree(QDBusConnectionPrivate::ObjectTreeNode &haystack) -+{ -+ QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator it = haystack.children.begin(); -+ -+ while (it != haystack.children.end()) { -+ disconnectObjectTree(*it); -+ it++; -+ } -+ -+ if (haystack.obj) { -+ haystack.obj->disconnect(this); -+ } -+} -+ - void QDBusConnectionPrivate::closeConnection() - { - QDBusWriteLocker locker(CloseConnectionAction, this); -@@ -1075,6 +1088,19 @@ void QDBusConnectionPrivate::closeConnection() - } - - qDeleteAll(pendingCalls); -+ -+ // clean up all signal hook and object tree, to avoid QObject::destroyed -+ // being activated to dbus daemon thread which already quits. -+ // dbus connection is already closed, so there is nothing we could do be clean -+ // up everything here. -+ SignalHookHash::iterator sit = signalHooks.begin(); -+ while (sit != signalHooks.end()) { -+ sit.value().obj->disconnect(this); -+ sit++; -+ } -+ -+ disconnectObjectTree(rootNode); -+ rootNode.children.clear(); // free resources - } - - void QDBusConnectionPrivate::checkThread() --- -2.7.1 - diff --git a/source/l/qt5/patches/qt5.qtbug-51649.patch b/source/l/qt5/patches/qt5.qtbug-51649.patch deleted file mode 100644 index 3b7cf9ec..00000000 --- a/source/l/qt5/patches/qt5.qtbug-51649.patch +++ /dev/null @@ -1,159 +0,0 @@ -From acde2e69df5dedc624674107596f276125e22864 Mon Sep 17 00:00:00 2001 -From: Weng Xuetian <wengxt@gmail.com> -Date: Thu, 3 Mar 2016 21:56:53 -0800 -Subject: [PATCH] QtDBus: finish all pending call with error if disconnected - -libdbus will send a local signal if connection gets disconnected. When -this happens, end all pending calls with QDBusError::Disconnected. - -Task-number: QTBUG-51649 -Change-Id: I5c7d2a468bb5da746d0c0e53e458c1e376f186a9 ---- - src/dbus/dbus_minimal_p.h | 2 ++ - src/dbus/qdbusintegrator.cpp | 26 +++++++++++++++++----- - src/dbus/qdbusutil_p.h | 6 +++++ - .../dbus/qdbusconnection/tst_qdbusconnection.cpp | 22 ++++++++++++++++++ - .../dbus/qdbusconnection/tst_qdbusconnection.h | 1 + - 5 files changed, 51 insertions(+), 6 deletions(-) - -diff --git a/src/dbus/dbus_minimal_p.h b/src/dbus/dbus_minimal_p.h -index f0a2954..8f25b24 100644 ---- a/src/dbus/dbus_minimal_p.h -+++ b/src/dbus/dbus_minimal_p.h -@@ -99,9 +99,11 @@ typedef dbus_uint32_t dbus_bool_t; - /* dbus-shared.h */ - #define DBUS_SERVICE_DBUS "org.freedesktop.DBus" - #define DBUS_PATH_DBUS "/org/freedesktop/DBus" -+#define DBUS_PATH_LOCAL "/org/freedesktop/DBus/Local" - #define DBUS_INTERFACE_DBUS "org.freedesktop.DBus" - #define DBUS_INTERFACE_INTROSPECTABLE "org.freedesktop.DBus.Introspectable" - #define DBUS_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties" -+#define DBUS_INTERFACE_LOCAL "org.freedesktop.DBus.Local" - - #define DBUS_NAME_FLAG_ALLOW_REPLACEMENT 0x1 /**< Allow another service to become the primary owner if requested */ - #define DBUS_NAME_FLAG_REPLACE_EXISTING 0x2 /**< Request to replace the current primary owner */ -diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp -index cd44861..320419f 100644 ---- a/src/dbus/qdbusintegrator.cpp -+++ b/src/dbus/qdbusintegrator.cpp -@@ -519,6 +519,14 @@ bool QDBusConnectionPrivate::handleMessage(const QDBusMessage &amsg) - switch (amsg.type()) { - case QDBusMessage::SignalMessage: - handleSignal(amsg); -+ // Check local disconnected signal from libdbus -+ if (amsg.interface() == QDBusUtil::dbusInterfaceLocal() -+ && amsg.path() == QDBusUtil::dbusPathLocal() -+ && amsg.member() == QDBusUtil::disconnected() -+ && !QDBusMessagePrivate::isLocal(amsg)) { -+ while (!pendingCalls.isEmpty()) -+ processFinishedCall(pendingCalls.first()); -+ } - // if there are any other filters in this DBusConnection, - // let them see the signal too - return false; -@@ -1767,10 +1775,16 @@ void QDBusConnectionPrivate::processFinishedCall(QDBusPendingCallPrivate *call) - - QDBusMessage &msg = call->replyMessage; - if (call->pending) { -- // decode the message -- DBusMessage *reply = q_dbus_pending_call_steal_reply(call->pending); -- msg = QDBusMessagePrivate::fromDBusMessage(reply, connection->capabilities); -- q_dbus_message_unref(reply); -+ // when processFinishedCall is called and pending call is not completed, -+ // it means we received disconnected signal from libdbus -+ if (q_dbus_pending_call_get_completed(call->pending)) { -+ // decode the message -+ DBusMessage *reply = q_dbus_pending_call_steal_reply(call->pending); -+ msg = QDBusMessagePrivate::fromDBusMessage(reply, connection->capabilities); -+ q_dbus_message_unref(reply); -+ } else { -+ msg = QDBusMessage::createError(QDBusError::Disconnected, QDBusUtil::disconnectedErrorMessage()); -+ } - } - qDBusDebug() << connection << "got message reply:" << msg; - -@@ -2070,8 +2084,8 @@ void QDBusConnectionPrivate::sendInternal(QDBusPendingCallPrivate *pcall, void * - pcall->pending = pending; - q_dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, 0); - -- // DBus won't notify us when a peer disconnects so we need to track these ourselves -- if (mode == QDBusConnectionPrivate::PeerMode) -+ // DBus won't notify us when a peer disconnects or server terminates so we need to track these ourselves -+ if (mode == QDBusConnectionPrivate::PeerMode || mode == QDBusConnectionPrivate::ClientMode) - pendingCalls.append(pcall); - - return; -diff --git a/src/dbus/qdbusutil_p.h b/src/dbus/qdbusutil_p.h -index 8f5ae92..ca70ff9 100644 ---- a/src/dbus/qdbusutil_p.h -+++ b/src/dbus/qdbusutil_p.h -@@ -155,6 +155,8 @@ namespace QDBusUtil - { return QStringLiteral(DBUS_SERVICE_DBUS); } - inline QString dbusPath() - { return QStringLiteral(DBUS_PATH_DBUS); } -+ inline QString dbusPathLocal() -+ { return QStringLiteral(DBUS_PATH_LOCAL); } - inline QString dbusInterface() - { - // it's the same string, but just be sure -@@ -165,8 +167,12 @@ namespace QDBusUtil - { return QStringLiteral(DBUS_INTERFACE_PROPERTIES); } - inline QString dbusInterfaceIntrospectable() - { return QStringLiteral(DBUS_INTERFACE_INTROSPECTABLE); } -+ inline QString dbusInterfaceLocal() -+ { return QStringLiteral(DBUS_INTERFACE_LOCAL); } - inline QString nameOwnerChanged() - { return QStringLiteral("NameOwnerChanged"); } -+ inline QString disconnected() -+ { return QStringLiteral("Disconnected"); } - inline QString disconnectedErrorMessage() - { return QStringLiteral("Not connected to D-Bus server"); } - } -diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp -index e91f87d..6c7e6b1 100644 ---- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp -+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp -@@ -1218,6 +1218,28 @@ void tst_QDBusConnection::callVirtualObjectLocal() - QCOMPARE(obj.replyArguments, subPathReply.arguments()); - } - -+void tst_QDBusConnection::pendingCallWhenDisconnected() -+{ -+ QDBusServer *server = new QDBusServer; -+ QDBusConnection con = QDBusConnection::connectToPeer(server->address(), "disconnect"); -+ QTestEventLoop::instance().enterLoop(2); -+ QVERIFY(!QTestEventLoop::instance().timeout()); -+ QVERIFY(con.isConnected()); -+ -+ delete server; -+ -+ // Make sure we call the method before we know it is disconnected. -+ QVERIFY(con.isConnected()); -+ QDBusMessage message = QDBusMessage::createMethodCall("", "/", QString(), "method"); -+ QDBusPendingCall reply = con.asyncCall(message); -+ -+ QTestEventLoop::instance().enterLoop(2); -+ QVERIFY(!con.isConnected()); -+ QVERIFY(reply.isFinished()); -+ QVERIFY(reply.isError()); -+ QVERIFY(reply.error().type() == QDBusError::Disconnected); -+} -+ - QString MyObject::path; - QString MyObjectWithoutInterface::path; - QString MyObjectWithoutInterface::interface; -diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h -index a53ba32..720e484 100644 ---- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h -+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h -@@ -121,6 +121,7 @@ private slots: - void registerVirtualObject(); - void callVirtualObject(); - void callVirtualObjectLocal(); -+ void pendingCallWhenDisconnected(); - - public: - QString serviceName() const { return "org.qtproject.Qt.Autotests.QDBusConnection"; } --- -2.7.1 - diff --git a/source/l/qt5/patches/qt5.qtbug-51676.patch b/source/l/qt5/patches/qt5.qtbug-51676.patch deleted file mode 100644 index 8672a213..00000000 --- a/source/l/qt5/patches/qt5.qtbug-51676.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 11c5e716b08b6b3c5a7c9fce96b0cde8624ec869 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Tue, 15 Mar 2016 11:00:20 -0700 -Subject: [PATCH] Fix QtDBus deadlock inside kded/kiod - -Whenever a message spy was installed, we failed to actually process -looped-back messages by queueing them for processing by the spy. That -had as a consequence that the caller got an error reply. Worse, since -the message had been queued, QtDBus would attempt to deliver it later. -Since that message had isLocal==true, bad things happened inside the -manager thread. - -The correct solution is not to queue the message for the filter. If the -message is local, then simply deliver directly, as we're still in the -user's thread. This used to be the behavior in Qt 5.5. - -Task-number: QTBUG-51676 -Change-Id: I1dc112894cde7121e8ce302ae51b438ade1ff612 ---- - src/dbus/qdbusintegrator.cpp | 42 ++++++++++++++++++++++++++++++++---------- - src/dbus/qdbusintegrator_p.h | 1 + - 2 files changed, 33 insertions(+), 10 deletions(-) - -diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp -index cd44861..478a2c4 100644 ---- a/src/dbus/qdbusintegrator.cpp -+++ b/src/dbus/qdbusintegrator.cpp -@@ -481,6 +481,11 @@ QDBusSpyCallEvent::~QDBusSpyCallEvent() - - void QDBusSpyCallEvent::placeMetaCall(QObject *) - { -+ invokeSpyHooks(msg, hooks, hookCount); -+} -+ -+inline void QDBusSpyCallEvent::invokeSpyHooks(const QDBusMessage &msg, const Hook *hooks, int hookCount) -+{ - // call the spy hook list - for (int i = 0; i < hookCount; ++i) - hooks[i](msg); -@@ -509,7 +514,12 @@ bool QDBusConnectionPrivate::handleMessage(const QDBusMessage &amsg) - { - if (!ref.load()) - return false; -- if (!dispatchEnabled && !QDBusMessagePrivate::isLocal(amsg)) { -+ -+ // local message are always delivered, regardless of filtering -+ // or whether the dispatcher is enabled -+ bool isLocal = QDBusMessagePrivate::isLocal(amsg); -+ -+ if (!dispatchEnabled && !isLocal) { - // queue messages only, we'll handle them later - qDBusDebug() << this << "delivery is suspended"; - pendingMessages << amsg; -@@ -523,13 +533,23 @@ bool QDBusConnectionPrivate::handleMessage(const QDBusMessage &amsg) - // let them see the signal too - return false; - case QDBusMessage::MethodCallMessage: -- // run it through the spy filters (if any) before the regular processing -+ // run it through the spy filters (if any) before the regular processing: -+ // a) if it's a local message, we're in the caller's thread, so invoke the filter directly -+ // b) if it's an external message, post to the main thread - if (Q_UNLIKELY(qDBusSpyHookList.exists()) && qApp) { - const QDBusSpyHookList &list = *qDBusSpyHookList; -- qDBusDebug() << this << "invoking message spies"; -- QCoreApplication::postEvent(qApp, new QDBusSpyCallEvent(this, QDBusConnection(this), -- amsg, list.constData(), list.size())); -- return true; -+ if (isLocal) { -+ Q_ASSERT(QThread::currentThread() != thread()); -+ qDBusDebug() << this << "invoking message spies directly"; -+ QDBusSpyCallEvent::invokeSpyHooks(amsg, list.constData(), list.size()); -+ } else { -+ qDBusDebug() << this << "invoking message spies via event"; -+ QCoreApplication::postEvent(qApp, new QDBusSpyCallEvent(this, QDBusConnection(this), -+ amsg, list.constData(), list.size())); -+ -+ // we'll be called back, so return -+ return true; -+ } - } - - handleObjectCall(amsg); -@@ -1451,9 +1471,9 @@ void QDBusConnectionPrivate::handleObjectCall(const QDBusMessage &msg) - // that means the dispatchLock mutex is locked - // must not call out to user code in that case - // -- // however, if the message is internal, handleMessage was called -- // directly and no lock is in place. We can therefore call out to -- // user code, if necessary -+ // however, if the message is internal, handleMessage was called directly -+ // (user's thread) and no lock is in place. We can therefore call out to -+ // user code, if necessary. - ObjectTreeNode result; - int usedLength; - QThread *objThread = 0; -@@ -1492,12 +1512,14 @@ void QDBusConnectionPrivate::handleObjectCall(const QDBusMessage &msg) - usedLength, msg)); - return; - } else if (objThread != QThread::currentThread()) { -- // synchronize with other thread -+ // looped-back message, targeting another thread: -+ // synchronize with it - postEventToThread(HandleObjectCallPostEventAction, result.obj, - new QDBusActivateObjectEvent(QDBusConnection(this), this, result, - usedLength, msg, &sem)); - semWait = true; - } else { -+ // looped-back message, targeting current thread - semWait = false; - } - } // release the lock -diff --git a/src/dbus/qdbusintegrator_p.h b/src/dbus/qdbusintegrator_p.h -index 2bbebdf..c0d9c22 100644 ---- a/src/dbus/qdbusintegrator_p.h -+++ b/src/dbus/qdbusintegrator_p.h -@@ -145,6 +145,7 @@ public: - {} - ~QDBusSpyCallEvent(); - void placeMetaCall(QObject *) Q_DECL_OVERRIDE; -+ static inline void invokeSpyHooks(const QDBusMessage &msg, const Hook *hooks, int hookCount); - - QDBusConnection conn; // keeps the refcount in QDBusConnectionPrivate up - QDBusMessage msg; --- -2.7.1 - diff --git a/source/l/qt5/patches/qt5.qtbug-51890.patch b/source/l/qt5/patches/qt5.qtbug-51890.patch deleted file mode 100644 index 51168b90..00000000 --- a/source/l/qt5/patches/qt5.qtbug-51890.patch +++ /dev/null @@ -1,82 +0,0 @@ -QTBUG-51890: qtwebengine fails to build with system nss 3.23 -Patch obtained from: -https://github.com/qtproject/qtwebengine/commit/82900c7b96b2a6fb42fe3841df7685b820edd588.patch - -And modified to exclude the "Subproject commit" lines. - -# ---------------------------------------------------------------------------- - -From 82900c7b96b2a6fb42fe3841df7685b820edd588 Mon Sep 17 00:00:00 2001 -From: Kai Koehne <kai.koehne@theqtcompany.com> -Date: Thu, 24 Mar 2016 13:55:28 +0100 -Subject: [PATCH] Use system NSS only for certificate handling - -Compiling against NSS 3.23 fails with current Chromium. Also, with NSS -3.21 there are failures connecting to e.g. google.com. - -Fix this by adapting the setup endorsed by upstream Chromium: BoringSSL -is always used for cryptography, and NSS only for certificate handlng. - -Patches included in 3rdparty update: - -0a385bb [backport] Call EnsureNSSHttpIOInit in the chimera build. -0472123 Fix build against newer NSS -90c62c4 <third_party/libpng> [Backport] update to libpng 1.2.56 -34857b8 <third_party/libpng> [Backport] Stop large iCCP chunks causing delays and "Aw Snap!" - -Task-number: QTBUG-52193 -Task-number: QTBUG-51890 -Task-number: QTBUG-52068 -Change-Id: If8aaed9b9a09475c5ed0dfec64d31f45ce9670f5 -Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> ---- - src/3rdparty | 2 +- - src/core/config/linux.pri | 9 ++++++--- - tools/qmake/mkspecs/features/configure.prf | 4 ++-- - 3 files changed, 9 insertions(+), 6 deletions(-) - -#diff --git a/src/3rdparty b/src/3rdparty -#index 3b2b78c..0a385bb 160000 -#--- a/src/3rdparty -#+++ b/src/3rdparty -#@@ -1 +1 @@ -#-Subproject commit 3b2b78caa761db2b7b25dc51c3dae8316f595db1 -#+Subproject commit 0a385bb01d9cf060fae4c9d350ee98561654df96 -diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri -index 88c1a41..39eeb2a 100644 ---- a/src/core/config/linux.pri -+++ b/src/core/config/linux.pri -@@ -18,11 +18,14 @@ GYP_CONFIG += \ - use_gio=0 \ - use_gnome_keyring=0 \ - use_kerberos=0 \ -- use_pango=0 -+ use_pango=0 \ -+ use_openssl=1 - --!use?(nss) { -+use?(nss) { -+ GYP_CONFIG += use_nss_certs=1 \ -+ use_openssl_certs=0 -+} else { - GYP_CONFIG += use_nss_certs=0 \ -- use_openssl=1 \ - use_openssl_certs=1 - } - -diff --git a/tools/qmake/mkspecs/features/configure.prf b/tools/qmake/mkspecs/features/configure.prf -index 4cb4600..953572d 100644 ---- a/tools/qmake/mkspecs/features/configure.prf -+++ b/tools/qmake/mkspecs/features/configure.prf -@@ -72,9 +72,9 @@ defineTest(runConfigure) { - defineTest(finalizeConfigure) { - linux { - use?(nss) { -- log("SSL............................... Using system NSS$${EOL}") -+ log("Certificate handling.............. Using system NSS$${EOL}") - } else { -- log("SSL............................... Using bundled BoringSSL$${EOL}") -+ log("Certificate handling.............. Using bundled BoringSSL$${EOL}") - } - use?(system_icu) { - packagesExist("icu-uc icu-i18n") { diff --git a/source/l/qt5/patches/qt5.qtbug-51927.patch b/source/l/qt5/patches/qt5.qtbug-51927.patch deleted file mode 100644 index d253dc15..00000000 --- a/source/l/qt5/patches/qt5.qtbug-51927.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 5149aa68eca6ede8836ec4f07a14d22d9da9b161 Mon Sep 17 00:00:00 2001 -From: Mitch Curtis <mitch.curtis@qt.io> -Date: Tue, 13 Sep 2016 12:42:12 +0200 -Subject: Fix crash on exit when using default property aliases with layouts - -The layout was being destroyed before the text, which meant that the -removeItemChangeListener() call never got hit. To ensure that the -listener is always removed, loop through each child in QQuickLayout's -destructor. - -This is a manual cherry-pick of -59c6c0e0b1b5b46747595a58e11311b7393d7e70. - -Task-number: QTBUG-51927 -Change-Id: I669f42beb8c3dd6b4b741cae0b16e017bb3409df -Reviewed-by: J-P Nurmi <jpnurmi@qt.io> ---- - src/imports/layouts/qquicklayout.cpp | 4 ++ - .../qquicklayouts/data/rowlayout/Container.qml | 55 ++++++++++++++++++++++ - .../qquicklayouts/data/rowlayout/ContainerUser.qml | 53 +++++++++++++++++++++ - .../quick/qquicklayouts/data/tst_rowlayout.qml | 12 +++++ - 4 files changed, 124 insertions(+) - create mode 100644 tests/auto/quick/qquicklayouts/data/rowlayout/Container.qml - create mode 100644 tests/auto/quick/qquicklayouts/data/rowlayout/ContainerUser.qml - -diff --git a/src/imports/layouts/qquicklayout.cpp b/src/imports/layouts/qquicklayout.cpp -index abc8f97..9914826 100644 ---- a/src/imports/layouts/qquicklayout.cpp -+++ b/src/imports/layouts/qquicklayout.cpp -@@ -698,6 +698,10 @@ QQuickLayout::QQuickLayout(QQuickLayoutPrivate &dd, QQuickItem *parent) - QQuickLayout::~QQuickLayout() - { - d_func()->m_isReady = false; -+ -+ const auto childItems = d_func()->childItems; -+ for (QQuickItem *child : childItems) -+ QQuickItemPrivate::get(child)->removeItemChangeListener(this, QQuickItemPrivate::SiblingOrder); - } - - QQuickLayoutAttached *QQuickLayout::qmlAttachedProperties(QObject *object) -diff --git a/tests/auto/quick/qquicklayouts/data/rowlayout/Container.qml b/tests/auto/quick/qquicklayouts/data/rowlayout/Container.qml -new file mode 100644 -index 0000000..22205c1 ---- /dev/null -+++ b/tests/auto/quick/qquicklayouts/data/rowlayout/Container.qml -@@ -0,0 +1,55 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2016 The Qt Company Ltd. -+** Contact: http://www.qt.io/licensing/ -+** -+** This file is part of the test suite of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:BSD$ -+** You may use this file under the terms of the BSD license as follows: -+** -+** "Redistribution and use in source and binary forms, with or without -+** modification, are permitted provided that the following conditions are -+** met: -+** * Redistributions of source code must retain the above copyright -+** notice, this list of conditions and the following disclaimer. -+** * Redistributions in binary form must reproduce the above copyright -+** notice, this list of conditions and the following disclaimer in -+** the documentation and/or other materials provided with the -+** distribution. -+** * Neither the name of The Qt Company Ltd nor the names of its -+** contributors may be used to endorse or promote products derived -+** from this software without specific prior written permission. -+** -+** -+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+import QtQuick 2.7 -+import QtQuick.Layouts 1.3 -+ -+Item { -+ objectName: "qtbug51927-window" -+ visible: true -+ -+ default property alias _contents: customContent.data -+ -+ RowLayout { -+ id: customContent -+ objectName: "qtbug51927-columnLayout" -+ anchors.fill: parent -+ } -+} -diff --git a/tests/auto/quick/qquicklayouts/data/rowlayout/ContainerUser.qml b/tests/auto/quick/qquicklayouts/data/rowlayout/ContainerUser.qml -new file mode 100644 -index 0000000..ff7ce62 ---- /dev/null -+++ b/tests/auto/quick/qquicklayouts/data/rowlayout/ContainerUser.qml -@@ -0,0 +1,53 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2016 The Qt Company Ltd. -+** Contact: http://www.qt.io/licensing/ -+** -+** This file is part of the test suite of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:BSD$ -+** You may use this file under the terms of the BSD license as follows: -+** -+** "Redistribution and use in source and binary forms, with or without -+** modification, are permitted provided that the following conditions are -+** met: -+** * Redistributions of source code must retain the above copyright -+** notice, this list of conditions and the following disclaimer. -+** * Redistributions in binary form must reproduce the above copyright -+** notice, this list of conditions and the following disclaimer in -+** the documentation and/or other materials provided with the -+** distribution. -+** * Neither the name of The Qt Company Ltd nor the names of its -+** contributors may be used to endorse or promote products derived -+** from this software without specific prior written permission. -+** -+** -+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+import QtQuick 2.6 -+import QtQuick.Window 2.2 -+ -+Container { -+ visible: true -+ -+ Text { -+ objectName: "qtbug51927-text" -+ text: qsTr("Hello World") -+ anchors.centerIn: parent -+ renderType: Text.QtRendering -+ } -+} -diff --git a/tests/auto/quick/qquicklayouts/data/tst_rowlayout.qml b/tests/auto/quick/qquicklayouts/data/tst_rowlayout.qml -index 33b8fd0..2d4e227 100644 ---- a/tests/auto/quick/qquicklayouts/data/tst_rowlayout.qml -+++ b/tests/auto/quick/qquicklayouts/data/tst_rowlayout.qml -@@ -926,5 +926,17 @@ Item { - waitForRendering(layout) - layout.destroy() - } -+ -+ -+ function test_defaultPropertyAliasCrash() { -+ var containerUserComponent = Qt.createComponent("rowlayout/ContainerUser.qml"); -+ compare(containerUserComponent.status, Component.Ready); -+ -+ var containerUser = containerUserComponent.createObject(testCase); -+ verify(containerUser); -+ -+ // Shouldn't crash. -+ containerUser.destroy(); -+ } - } - } --- -cgit v1.0-4-g1e03 - diff --git a/source/l/qt5/patches/qt5.qtbug-53237.patch b/source/l/qt5/patches/qt5.qtbug-53237.patch deleted file mode 100644 index c6d5739d..00000000 --- a/source/l/qt5/patches/qt5.qtbug-53237.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 8e889378115c69508b050a511621ac8e30ec4158 Mon Sep 17 00:00:00 2001 -From: Jesus Fernandez <jesus.fernandez@theqtcompany.com> -Date: Mon, 13 Jun 2016 19:09:15 +0200 -Subject: [PATCH] Fix UNSIGNED values in QMYSQL - -The unsigned flag in columns was ignored when creating the list of -bound values in a mysql table. So the result iteration with -QSqlQuery::next stops after the first wrong truncated value. - -[ChangeLog][QtSql] Fixed QSqlQuery::prepare value truncation error when -using UNSIGNED values in a MySQL database. - -Task-number: QTBUG-53969 -Task-number: QTBUG-53237 -Change-Id: I10d977993445f2794f1dd8c88b2e83517ef524f3 -Reviewed-by: Milian Wolff <milian.wolff@kdab.com> ---- - src/sql/drivers/mysql/qsql_mysql.cpp | 1 + - tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 39 +++++++++++++++++++++++ - 2 files changed, 40 insertions(+) - -diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp -index 96bdcc4..55bf499 100644 ---- a/src/sql/drivers/mysql/qsql_mysql.cpp -+++ b/src/sql/drivers/mysql/qsql_mysql.cpp -@@ -387,6 +387,7 @@ bool QMYSQLResultPrivate::bindInValues() - bind->buffer_length = f.bufLength = fieldInfo->length + 1; - bind->is_null = &f.nullIndicator; - bind->length = &f.bufLength; -+ bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0; - f.outField=field; - - ++i; -diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -index bd553d5..f1c4333 100644 ---- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -@@ -233,6 +233,9 @@ private slots: - void QTBUG_36211_data() { generic_data("QPSQL"); } - void QTBUG_36211(); - -+ void QTBUG_53969_data() { generic_data("QMYSQL"); } -+ void QTBUG_53969(); -+ - void sqlite_constraint_data() { generic_data("QSQLITE"); } - void sqlite_constraint(); - -@@ -3652,6 +3655,42 @@ void tst_QSqlQuery::QTBUG_36211() - } - } - -+void tst_QSqlQuery::QTBUG_53969() -+{ -+ QFETCH( QString, dbName ); -+ QVector<int> values = QVector<int>() << 10 << 20 << 127 << 128 << 1, tableValues; -+ QSqlDatabase db = QSqlDatabase::database( dbName ); -+ CHECK_DATABASE( db ); -+ tableValues.reserve(values.size()); -+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::MySqlServer) { -+ const QString tableName(qTableName("bug53969", __FILE__, db)); -+ tst_Databases::safeDropTable( db, tableName ); -+ -+ QSqlQuery q(db); -+ QVERIFY_SQL(q, exec(QString("CREATE TABLE %1 (id INT AUTO_INCREMENT PRIMARY KEY, " -+ "test_number TINYINT(3) UNSIGNED)") -+ .arg(tableName))); -+ -+ QVERIFY_SQL(q, prepare("INSERT INTO " + tableName + " (test_number) VALUES (:value)")); -+ -+ QVector<int>::iterator begin = values.begin(), end = values.end(), it; -+ for (it = begin; it != end; ++it) { -+ q.bindValue(":value", *it); -+ QVERIFY_SQL(q, exec()); -+ } -+ -+ QVERIFY_SQL(q, prepare("SELECT test_number FROM " + tableName)); -+ QVERIFY_SQL(q, exec()); -+ -+ while (q.next()) { -+ bool ok; -+ tableValues.push_back(q.value(0).toUInt(&ok)); -+ QVERIFY(ok); -+ } -+ QCOMPARE(values, tableValues); -+ } -+} -+ - void tst_QSqlQuery::oraOCINumber() - { - QFETCH( QString, dbName ); diff --git a/source/l/qt5/patches/qt5.qtbug-55583.patch b/source/l/qt5/patches/qt5.qtbug-55583.patch deleted file mode 100644 index 804f5383..00000000 --- a/source/l/qt5/patches/qt5.qtbug-55583.patch +++ /dev/null @@ -1,41 +0,0 @@ -# -# https://github.com/qt/qtbase/commit/84ea00d4.patch -# -From 84ea00d47049d882f2fabf1446ec6c6eb5fe3038 Mon Sep 17 00:00:00 2001 -From: J-P Nurmi <jpnurmi@qt.io> -Date: Tue, 6 Dec 2016 16:30:31 +0100 -Subject: [PATCH] QGtk3Dialog: don't crash on Wayland - -Check if it's an X11 window before calling XSetTransientForHint(). -No transient parent will be set for GTK+ dialogs on Wayland. That -has to be implemented separately. - -Task-number: QTBUG-55583 -Change-Id: Iabc2a72681c8157bb2f2fe500892853aa397106b -Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> -Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> ---- - src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp -index ba5089a..699b058 100644 ---- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp -+++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp -@@ -135,10 +135,12 @@ bool QGtk3Dialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWind - - GdkWindow *gdkWindow = gtk_widget_get_window(gtkWidget); - if (parent) { -- GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow); -- XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay), -- gdk_x11_window_get_xid(gdkWindow), -- parent->winId()); -+ if (GDK_IS_X11_WINDOW(gdkWindow)) { -+ GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow); -+ XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay), -+ gdk_x11_window_get_xid(gdkWindow), -+ parent->winId()); -+ } - } - - if (modality != Qt::NonModal) { diff --git a/source/l/qt5/patches/qt5.qtbug-60558.patch b/source/l/qt5/patches/qt5.qtbug-60558.patch deleted file mode 100644 index 2d039203..00000000 --- a/source/l/qt5/patches/qt5.qtbug-60558.patch +++ /dev/null @@ -1,32 +0,0 @@ -https://github.com/qt/qtbase/commit/f45c6c18.patch - -From f45c6c180463ccb6620e1d273a264f14a1204a93 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Wed, 3 May 2017 14:08:50 -0700 -Subject: [PATCH] QInternal::unregisterCallback: don't crash on unregistering - during exit - -Task-number: QTBUG-60558 -Change-Id: Ica9894dc9b5e48278fd4fffd14bb34c6d98d2555 -Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> ---- - src/corelib/global/qglobal.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp -index c37503f3db..22fc20d47e 100644 ---- a/src/corelib/global/qglobal.cpp -+++ b/src/corelib/global/qglobal.cpp -@@ -3988,8 +3988,10 @@ bool QInternal::registerCallback(Callback cb, qInternalCallback callback) - bool QInternal::unregisterCallback(Callback cb, qInternalCallback callback) - { - if (cb >= 0 && cb < QInternal::LastCallback) { -- QInternal_CallBackTable *cbt = global_callback_table(); -- return (bool) cbt->callbacks[cb].removeAll(callback); -+ if (global_callback_table.exists()) { -+ QInternal_CallBackTable *cbt = global_callback_table(); -+ return (bool) cbt->callbacks[cb].removeAll(callback); -+ } - } - return false; - } diff --git a/source/l/qt5/patches/qt5.qtbug-61140.patch b/source/l/qt5/patches/qt5.qtbug-61140.patch deleted file mode 100644 index 17468a95..00000000 --- a/source/l/qt5/patches/qt5.qtbug-61140.patch +++ /dev/null @@ -1,101 +0,0 @@ -https://github.com/qt/qtbase/commit/744fd39e.patch - -From 744fd39e66b0b44e65a2505d674fa1cda8b205a4 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io> -Date: Fri, 2 Jun 2017 11:09:55 +0200 -Subject: [PATCH] xcb: Don't destroy foreign windows - -We can't rely on virtual dispatch in the destructor. - -Task-number: QTBUG-61140 -Change-Id: Ib1026caf126095778c24254775cb5a0bfecf3a38 -Reviewed-by: Fabian Vogt -Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> ---- - src/plugins/platforms/xcb/qxcbintegration.cpp | 18 +----------------- - src/plugins/platforms/xcb/qxcbwindow.cpp | 16 ++++++++++------ - src/plugins/platforms/xcb/qxcbwindow.h | 12 ++++++++++++ - 3 files changed, 23 insertions(+), 23 deletions(-) - -diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp -index b414bee204..8e3ee20329 100644 ---- a/src/plugins/platforms/xcb/qxcbintegration.cpp -+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp -@@ -214,25 +214,9 @@ QPlatformWindow *QXcbIntegration::createPlatformWindow(QWindow *window) const - return xcbWindow; - } - --class QXcbForeignWindow : public QXcbWindow --{ --public: -- QXcbForeignWindow(QWindow *window, WId nativeHandle) -- : QXcbWindow(window) { m_window = nativeHandle; } -- ~QXcbForeignWindow() {} -- bool isForeignWindow() const override { return true; } -- --protected: -- // No-ops -- void create() override {} -- void destroy() override {} --}; -- - QPlatformWindow *QXcbIntegration::createForeignWindow(QWindow *window, WId nativeHandle) const - { -- QXcbWindow *xcbWindow = new QXcbForeignWindow(window, nativeHandle); -- xcbWindow->create(); -- return xcbWindow; -+ return new QXcbForeignWindow(window, nativeHandle); - } - - #ifndef QT_NO_OPENGL -diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp -index 289d0720e7..d6c69d52ef 100644 ---- a/src/plugins/platforms/xcb/qxcbwindow.cpp -+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp -@@ -597,13 +597,17 @@ QXcbWindow::~QXcbWindow() - } - - destroy(); -+} - -- if (isForeignWindow()) { -- if (connection()->mouseGrabber() == this) -- connection()->setMouseGrabber(Q_NULLPTR); -- if (connection()->mousePressWindow() == this) -- connection()->setMousePressWindow(Q_NULLPTR); -- } -+QXcbForeignWindow::~QXcbForeignWindow() -+{ -+ // Clear window so that destroy() does not affect it -+ m_window = 0; -+ -+ if (connection()->mouseGrabber() == this) -+ connection()->setMouseGrabber(nullptr); -+ if (connection()->mousePressWindow() == this) -+ connection()->setMousePressWindow(nullptr); - } - - void QXcbWindow::destroy() -diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h -index 56628094ee..f38343b6c2 100644 ---- a/src/plugins/platforms/xcb/qxcbwindow.h -+++ b/src/plugins/platforms/xcb/qxcbwindow.h -@@ -278,6 +278,18 @@ public Q_SLOTS: - xcb_cursor_t m_currentBitmapCursor = XCB_CURSOR_NONE; - }; - -+class QXcbForeignWindow : public QXcbWindow -+{ -+public: -+ QXcbForeignWindow(QWindow *window, WId nativeHandle) -+ : QXcbWindow(window) { m_window = nativeHandle; } -+ ~QXcbForeignWindow(); -+ bool isForeignWindow() const override { return true; } -+ -+protected: -+ void create() override {} // No-op -+}; -+ - QT_END_NAMESPACE - - Q_DECLARE_METATYPE(QXcbWindow*) diff --git a/source/l/qt5/patches/qt5.qtbug-66103.patch b/source/l/qt5/patches/qt5.qtbug-66103.patch deleted file mode 100644 index 62d1b301..00000000 --- a/source/l/qt5/patches/qt5.qtbug-66103.patch +++ /dev/null @@ -1,172 +0,0 @@ -https://code.qt.io/cgit/qt/qtbase.git/patch/?id=4a7771f206d4b29be549d3827c36a46679d90de6 - -From 4a7771f206d4b29be549d3827c36a46679d90de6 Mon Sep 17 00:00:00 2001 -From: Eike Hein <hein@kde.org> -Date: Sun, 7 Jan 2018 13:02:01 +0900 -Subject: QSimpleDrag: Fix mouse release coords for delayed event transmission - -On platforms such as XCB, the drag cursor pixmap is shown via a window -(a QShapedPixmapWindow) under the cursor. - -The mouse button release event at the end of the drag is received in -this QXcbWindow, but intercepted by an event filter that QSimpleDrag -installs on the QApplication. It then resends it unmodified(!) after -the drag has ended and the drag pixmap window destroyed, causing it to -be delivered to the new top-level window. - -The local coordinates in the unmodified QMouseEvent are local to the -drag pixmap window and don't match the window it is delayed-transmitted -to. - -This ends up having fatal, user-visible effects particularly in Qt -Quick: QQuickWindow synthesizes a hover event once per frame using -the last received mouse coordinates, here: the release posted by -QSimpleDrag. This is done to update the hover event state for items -under the cursor when the mouse hasn't moved (e.g. QQuickMouseArea:: -containsMouse). The bogus event coordinates in the release event then -usually end up causing an item near the top-left of the QQuickWindow -to assume it is hovered (because drag pixmap windows tend to be small), -even when the mouse cursor is actually far away from it at the end of -the drag. - -This shows up e.g. in the Plasma 5 desktop, where dragging an icon -on the desktop will cause the icon at the top-left of the screen (if -any) to switch to hovered state, as the release coordinates on the -drag pixmap window (showing a dragged icon) fall into the geometry -of the top-left icon. - -QSimpleDrag contains a topLevelAt() function to find the top-level -window under the global cursor coordinates that is not the drag -pixmap window. This is used by the drop event delivery code. - -This patch uses this function to find the relevant top-level window, -then asks it to map the global cusor coordinates to its local -coordinate system, then synthesizes a new QMouseEvent with local -coordinates computed in this fashion. As a result the window now -gets a release event with coordinates that make sense and are -correct. - -Task-number: QTBUG-66103 -Change-Id: I04ebe6ccd4a991fdd4b540ff0227973ea8896a9d -Reviewed-by: Eike Hein <hein@kde.org> -Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> ---- - src/gui/kernel/qsimpledrag.cpp | 32 +++++++++++++++++++++++++++----- - src/gui/kernel/qsimpledrag_p.h | 6 +++--- - 2 files changed, 30 insertions(+), 8 deletions(-) - -diff --git a/src/gui/kernel/qsimpledrag.cpp b/src/gui/kernel/qsimpledrag.cpp -index a1e25dc53c..87d3ba5915 100644 ---- a/src/gui/kernel/qsimpledrag.cpp -+++ b/src/gui/kernel/qsimpledrag.cpp -@@ -58,6 +58,7 @@ - - #include <QtCore/QEventLoop> - #include <QtCore/QDebug> -+#include <QtCore/QLoggingCategory> - - #include <private/qguiapplication_p.h> - #include <private/qdnd_p.h> -@@ -69,6 +70,8 @@ QT_BEGIN_NAMESPACE - - #ifndef QT_NO_DRAGANDDROP - -+Q_LOGGING_CATEGORY(lcDnd, "qt.gui.dnd") -+ - static QWindow* topLevelAt(const QPoint &pos) - { - QWindowList list = QGuiApplication::topLevelWindows(); -@@ -94,10 +97,10 @@ static QWindow* topLevelAt(const QPoint &pos) - */ - - QBasicDrag::QBasicDrag() : -- m_restoreCursor(false), m_eventLoop(0), -+ m_current_window(nullptr), m_restoreCursor(false), m_eventLoop(nullptr), - m_executed_drop_action(Qt::IgnoreAction), m_can_drop(false), -- m_drag(0), m_drag_icon_window(0), m_useCompositing(true), -- m_screen(Q_NULLPTR) -+ m_drag(nullptr), m_drag_icon_window(nullptr), m_useCompositing(true), -+ m_screen(nullptr) - { - } - -@@ -161,6 +164,7 @@ bool QBasicDrag::eventFilter(QObject *o, QEvent *e) - return true; // Eat all mouse move events - } - case QEvent::MouseButtonRelease: -+ { - disableEventFilter(); - if (canDrop()) { - QPoint nativePosition = getNativeMousePos(e, m_drag_icon_window); -@@ -169,8 +173,25 @@ bool QBasicDrag::eventFilter(QObject *o, QEvent *e) - cancel(); - } - exitDndEventLoop(); -- QCoreApplication::postEvent(o, new QMouseEvent(*static_cast<QMouseEvent *>(e))); -+ -+ // If a QShapedPixmapWindow (drag feedback) is being dragged along, the -+ // mouse event's localPos() will be relative to that, which is useless. -+ // We want a position relative to the window where the drag ends, if possible (?). -+ // If there is no such window (belonging to this Qt application), -+ // make the event relative to the window where the drag started. (QTBUG-66103) -+ const QMouseEvent *release = static_cast<QMouseEvent *>(e); -+ const QWindow *releaseWindow = topLevelAt(release->globalPos()); -+ qCDebug(lcDnd) << "mouse released over" << releaseWindow << "after drag from" << m_current_window << "globalPos" << release->globalPos(); -+ if (!releaseWindow) -+ releaseWindow = m_current_window; -+ QPoint releaseWindowPos = (releaseWindow ? releaseWindow->mapFromGlobal(release->globalPos()) : release->globalPos()); -+ QMouseEvent *newRelease = new QMouseEvent(release->type(), -+ releaseWindowPos, releaseWindowPos, release->screenPos(), -+ release->button(), release->buttons(), -+ release->modifiers(), release->source()); -+ QCoreApplication::postEvent(o, newRelease); - return true; // defer mouse release events until drag event loop has returned -+ } - case QEvent::MouseButtonDblClick: - case QEvent::Wheel: - return true; -@@ -349,7 +370,7 @@ static inline QPoint fromNativeGlobalPixels(const QPoint &point) - into account. - */ - --QSimpleDrag::QSimpleDrag() : m_current_window(0) -+QSimpleDrag::QSimpleDrag() - { - } - -@@ -373,6 +394,7 @@ void QSimpleDrag::startDrag() - updateCursor(Qt::IgnoreAction); - } - setExecutedDropAction(Qt::IgnoreAction); -+ qCDebug(lcDnd) << "drag began from" << m_current_window<< "cursor pos" << QCursor::pos() << "can drop?" << canDrop(); - } - - void QSimpleDrag::cancel() -diff --git a/src/gui/kernel/qsimpledrag_p.h b/src/gui/kernel/qsimpledrag_p.h -index 0b8a0bc703..bbd7f7f4bb 100644 ---- a/src/gui/kernel/qsimpledrag_p.h -+++ b/src/gui/kernel/qsimpledrag_p.h -@@ -105,6 +105,9 @@ protected: - - QDrag *drag() const { return m_drag; } - -+protected: -+ QWindow *m_current_window; -+ - private: - void enableEventFilter(); - void disableEventFilter(); -@@ -132,9 +135,6 @@ protected: - virtual void cancel() Q_DECL_OVERRIDE; - virtual void move(const QPoint &globalPos) Q_DECL_OVERRIDE; - virtual void drop(const QPoint &globalPos) Q_DECL_OVERRIDE; -- --private: -- QWindow *m_current_window; - }; - - #endif // QT_NO_DRAGANDDROP --- -cgit v1.1-6-g87c4 - - diff --git a/source/l/qt5/patches/qt5.qtbug-69310.patch b/source/l/qt5/patches/qt5.qtbug-69310.patch deleted file mode 100644 index b9246273..00000000 --- a/source/l/qt5/patches/qt5.qtbug-69310.patch +++ /dev/null @@ -1,37 +0,0 @@ -From fcba9fa861574f33e1d2e54d8c8d6da8062927cd Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen <allan.jensen@qt.io> -Date: Wed, 23 Jan 2019 10:42:12 +0100 -Subject: Fix regression in QPlainTextEdit updating - -It was incorrectly counting a block having more than one line as having -changed visibility. - -Fixes: QTBUG-69310 -Change-Id: I502cda1d3e8a4efb1c14122353cc0a4731d8581c -Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> ---- - src/widgets/widgets/qplaintextedit.cpp | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp -index d6f6a364a8..57f2dec8f7 100644 ---- a/src/widgets/widgets/qplaintextedit.cpp -+++ b/src/widgets/widgets/qplaintextedit.cpp -@@ -312,10 +312,11 @@ void QPlainTextDocumentLayout::documentChanged(int from, int charsRemoved, int c - QTextBlock block = changeStartBlock; - do { - block.clearLayout(); -- const int lineCount = block.isVisible() ? 1 : 0; -- if (block.lineCount() != lineCount) { -+ if (block.isVisible() -+ ? (block.lineCount() == 0) -+ : (block.lineCount() > 0)) { - blockVisibilityChanged = true; -- block.setLineCount(lineCount); -+ block.setLineCount(block.isVisible() ? 1 : 0); - } - if (block == changeEndBlock) - break; --- -cgit v1.2.1 - diff --git a/source/l/qt5/patches/qt5.qtbug-76255.patch b/source/l/qt5/patches/qt5.qtbug-76255.patch deleted file mode 100644 index 678913ce..00000000 --- a/source/l/qt5/patches/qt5.qtbug-76255.patch +++ /dev/null @@ -1,35 +0,0 @@ -From cc32a691936f37eaaec618a71edd62f896009c9d Mon Sep 17 00:00:00 2001 -From: Joerg Bornemann <joerg.bornemann@qt.io> -Date: Fri, 06 Sep 2019 10:54:44 +0200 -Subject: [PATCH] Fix CMake config files for -libdir different from "lib" - -When Qt was configured with -libdir different from "lib", one could not -build with CMake whenever a static lib was pulled in (e.g. uitools). - -Do not hard-code "/lib" but use the correct variable also for static -libraries. - -Fixes: QTBUG-76255 -Change-Id: I28c6861752e29e461247628d2b1f8a9ec32f0790 -Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> -Reviewed-by: Fabian Vogt <fabian@ritter-vogt.de> ---- - -diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -index d4fd057..f4a34d6 100644 ---- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -@@ -53,7 +53,11 @@ - set(_lib_deps) - set(_link_flags) - -- get_filename_component(_qt5_install_libs \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/lib\" ABSOLUTE) -+!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -+ set(_qt5_install_libs \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}\") -+!!ELSE -+ set(_qt5_install_libs \"$${CMAKE_LIB_DIR}\") -+!!ENDIF - - if(EXISTS \"${prl_file_location}\") - file(STRINGS \"${prl_file_location}\" _prl_strings REGEX \"QMAKE_PRL_LIBS_FOR_CMAKE[ \\t]*=\") - diff --git a/source/l/qt5/patches/qt5.qtbug-77037.patch b/source/l/qt5/patches/qt5.qtbug-77037.patch deleted file mode 100644 index 4dac59a9..00000000 --- a/source/l/qt5/patches/qt5.qtbug-77037.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 0b57f15958f07ef12c8944d6db7a33a6fe9d9c59 Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen <allan.jensen@qt.io> -Date: Mon, 23 Sep 2019 13:49:53 +0200 -Subject: Fix building with pulseaudio 13 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The function signature changed though the ABI stayed the same. - -Change-Id: I86ca361b5e4f0c523e1031910df438c23beee876 -Fixes: QTBUG-77037 -Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io> ---- - chromium/media/audio/pulse/pulse.sigs | 16 ++++++++-------- - chromium/media/audio/pulse/pulse_stub_header.fragment | 11 +++++++++++ - 2 files changed, 19 insertions(+), 8 deletions(-) - -diff --git a/chromium/media/audio/pulse/pulse.sigs b/chromium/media/audio/pulse/pulse.sigs -index 8b5888786a9..daaeb149c13 100644 ---- a/chromium/media/audio/pulse/pulse.sigs -+++ b/chromium/media/audio/pulse/pulse.sigs -@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info_by_index(pa_context* c, uint32_t idx, p - pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata); - pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata); - pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata); --pa_context_state_t pa_context_get_state(pa_context* c); -+pa_context_state_t pa_context_get_state(const_pa_context_ptr c); - pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name); - pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata); - void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata); --pa_operation_state_t pa_operation_get_state(pa_operation* o); -+pa_operation_state_t pa_operation_get_state(const_pa_operation_ptr o); - void pa_context_unref(pa_context* c); - void pa_operation_unref(pa_operation* o); - int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes); -@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream* s, int b, pa_stream_success_cb_t cb, voi - int pa_stream_disconnect(pa_stream* s); - int pa_stream_drop(pa_stream *p); - pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata); --uint32_t pa_stream_get_device_index(pa_stream* s); -+uint32_t pa_stream_get_device_index(const_pa_stream_ptr s); - int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative); --pa_stream_state_t pa_stream_get_state(pa_stream* p); -+pa_stream_state_t pa_stream_get_state(const_pa_stream_ptr p); - pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map); - pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p); - pa_proplist* pa_proplist_new(void); --int pa_proplist_contains(pa_proplist* p, const char* key); -+int pa_proplist_contains(const_pa_proplist_ptr p, const char* key); - void pa_proplist_free(pa_proplist* p); --const char* pa_proplist_gets(pa_proplist* p, const char* key); -+const char* pa_proplist_gets(const_pa_proplist_ptr p, const char* key); - int pa_proplist_sets(pa_proplist* p, const char* key, const char* value); --size_t pa_stream_readable_size(pa_stream *p); -+size_t pa_stream_readable_size(const_pa_stream_ptr p); - int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes); - void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata); - void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata); - int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek); - void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata); - void pa_stream_unref(pa_stream* s); --int pa_context_errno(pa_context *c); -+int pa_context_errno(const_pa_context_ptr c); - const char* pa_strerror(int error); - pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v); -diff --git a/chromium/media/audio/pulse/pulse_stub_header.fragment b/chromium/media/audio/pulse/pulse_stub_header.fragment -index 2a2d3e7552b..cdaa841b29f 100644 ---- a/chromium/media/audio/pulse/pulse_stub_header.fragment -+++ b/chromium/media/audio/pulse/pulse_stub_header.fragment -@@ -5,4 +5,15 @@ extern "C" { - - #include <pulse/pulseaudio.h> - -+#if PA_MAJOR > 12 -+typedef const pa_context* const_pa_context_ptr; -+typedef const pa_operation* const_pa_operation_ptr; -+typedef const pa_proplist* const_pa_proplist_ptr; -+typedef const pa_stream* const_pa_stream_ptr; -+#else -+typedef pa_context* const_pa_context_ptr; -+typedef pa_operation* const_pa_operation_ptr; -+typedef pa_proplist* const_pa_proplist_ptr; -+typedef pa_stream* const_pa_stream_ptr; -+#endif - } --- -cgit v1.2.1 - diff --git a/source/l/qt5/patches/qt5.qtbug-77364.patch b/source/l/qt5/patches/qt5.qtbug-77364.patch deleted file mode 100644 index 088856c7..00000000 --- a/source/l/qt5/patches/qt5.qtbug-77364.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp -index 04290a4ce1..27773d5762 100644 ---- a/src/widgets/kernel/qwidget.cpp -+++ b/src/widgets/kernel/qwidget.cpp -@@ -6446,7 +6446,7 @@ void QWidget::setFocusProxy(QWidget * w) - - if (changingAppFocusWidget) { - QWidget *newDeepestFocusProxy = d_func()->deepestFocusProxy(); -- QApplicationPrivate::focus_widget = newDeepestFocusProxy ? newDeepestFocusProxy : this; -+ QApplicationPrivate::setFocusWidget(newDeepestFocusProxy ? newDeepestFocusProxy : this, Qt::NoFocusReason); - } - } - diff --git a/source/l/qt5/patches/qt5.webengine_gcc8.patch b/source/l/qt5/patches/qt5.webengine_gcc8.patch deleted file mode 100644 index cf276bc7..00000000 --- a/source/l/qt5/patches/qt5.webengine_gcc8.patch +++ /dev/null @@ -1,26 +0,0 @@ -# Prevent these errors caused by using GCC8 -# (original patch taken from Fedora's chromium SRPM): -# -# make: *** [Makefile:1028: module-qtwebengine-make_first] Error 2 -# FAILED: obj/mojo/public/c/system/system/thunks.o -# ../../3rdparty/chromium/mojo/public/c/system/buffer.h:38:42: error: static assertion failed: int64_t has weird alignment -# ../../3rdparty/chromium/mojo/public/c/system/data_pipe.h:49:42: error: static assertion failed: int64_t has weird alignment -# ../../3rdparty/chromium/mojo/public/c/system/message_pipe.h:47:42: error: static assertion failed: int64_t has weird alignment -# ---- a/src/3rdparty/chromium/mojo/public/c/system/macros.h 2018-05-15 14:58:46.448912634 -0400 -+++ b/src/3rdparty/chromium/mojo/public/c/system/macros.h 2018-05-15 14:58:52.041784613 -0400 -@@ -18,7 +18,13 @@ - #endif - - // Like the C++11 |alignof| operator. --#if __cplusplus >= 201103L -+#if defined(__GNUC__) && __GNUC__ >= 8 -+// GCC 8 has changed the alignof operator to return the minimal alignment -+// required by the target ABI, instead of the preferred alignment. -+// This means that on 32-bit x86, it will return 4 instead of 8. -+// Use __alignof__ instead to avoid this. -+#define MOJO_ALIGNOF(type) __alignof__(type) -+#elif __cplusplus >= 201103L - #define MOJO_ALIGNOF(type) alignof(type) - #elif defined(__GNUC__) - #define MOJO_ALIGNOF(type) __alignof__(type) diff --git a/source/l/qt5/patches/qt5.whandle.patch b/source/l/qt5/patches/qt5.whandle.patch deleted file mode 100644 index 4428974d..00000000 --- a/source/l/qt5/patches/qt5.whandle.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: Ulf Hermann <ulf.hermann@theqtcompany.com> -Date: Tue, 27 Oct 2015 14:25:42 +0000 (+0100) -Subject: WIP: Also do hide/show via WA_OutsideWSRange for native widgets -X-Git-Url: https://codereview.qt-project.org/gitweb?p=qt%2Fqtbase.git;a=commitdiff_plain;h=5ea44d1d516f0c68a6793279df5c1569ef9fadd2 - -WIP: Also do hide/show via WA_OutsideWSRange for native widgets - -Task-number: QTBUG-48321 -Change-Id: I78ef29975181ee22429c9bd4b11d96d9e68b7a9c ---- - -diff --git a/qtbase/src/widgets/kernel/qwidget.cpp b/qtbase/src/widgets/kernel/qwidget.cpp -index a006246..024005d 100644 ---- a/qtbase/src/widgets/kernel/qwidget.cpp -+++ b/qtbase/src/widgets/kernel/qwidget.cpp -@@ -7169,7 +7169,7 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) - - bool needsShow = false; - -- if (q->isWindow()) { -+ if (q->isWindow() || q->windowHandle()) { - if (!(data.window_state & Qt::WindowFullScreen) && (w == 0 || h == 0)) { - q->setAttribute(Qt::WA_OutsideWSRange, true); - if (q->isVisible() && q->testAttribute(Qt::WA_Mapped)) diff --git a/source/l/qt5/patches/qtbase-qxcbwindow.patch b/source/l/qt5/patches/qtbase-qxcbwindow.patch deleted file mode 100644 index 62a0bb44..00000000 --- a/source/l/qt5/patches/qtbase-qxcbwindow.patch +++ /dev/null @@ -1,97 +0,0 @@ -Taken from: https://code.qt.io/cgit/qt/qtbase.git/patch/?id=0c183117 - -From 0c1831178540462da31fd7a4b6d2e446bc84498b Mon Sep 17 00:00:00 2001 -From: Erik Kurzinger <ekurzinger@nvidia.com> -Date: Thu, 13 Jun 2019 08:15:50 -0700 -Subject: Track swap interval in QXcbWindow - -As per GLX_EXT_swap_control, the GLX swap interval is specified on a -per-drawable basis. However, QGLXContext only tracks it per-context -using the m_swapInterval member. If a new drawable is made current to a -context, it is still necessary to call glXSwapIntervalEXT to change the -swap interval, even if it has been previously called for the same -context with a different drawable. However, currently, -QGLXContext::makeCurrent doesn't do this if its m_swapInterval field -matches the new swap interval. This change removes m_swapInterval from -QGLXContext, instead tracking it in QXcbWindow. This still avoids -unnecessary calls to glXSwapIntervalEXT, while ensuring the swap -interval is always set for new window drawables. - -Change-Id: Idc34101476c6af618059f6f3d8925dee743994a3 -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> ---- - .../platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp | 6 +++--- - src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.h | 1 - - src/plugins/platforms/xcb/qxcbwindow.h | 4 ++++ - 3 files changed, 7 insertions(+), 4 deletions(-) - -diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -index 4adf662152..f26f698e76 100644 ---- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -@@ -204,7 +204,6 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat - , m_shareContext(0) - , m_format(format) - , m_isPBufferCurrent(false) -- , m_swapInterval(-1) - , m_ownsContext(nativeHandle.isNull()) - , m_getGraphicsResetStatus(0) - , m_lost(false) -@@ -567,9 +566,9 @@ bool QGLXContext::makeCurrent(QPlatformSurface *surface) - - if (success && surfaceClass == QSurface::Window) { - int interval = surface->format().swapInterval(); -+ QXcbWindow *window = static_cast<QXcbWindow *>(surface); - QXcbScreen *screen = screenForPlatformSurface(surface); -- if (interval >= 0 && m_swapInterval != interval && screen) { -- m_swapInterval = interval; -+ if (interval >= 0 && interval != window->swapInterval() && screen) { - typedef void (*qt_glXSwapIntervalEXT)(Display *, GLXDrawable, int); - typedef void (*qt_glXSwapIntervalMESA)(unsigned int); - static qt_glXSwapIntervalEXT glXSwapIntervalEXT = 0; -@@ -588,6 +587,7 @@ bool QGLXContext::makeCurrent(QPlatformSurface *surface) - glXSwapIntervalEXT(m_display, glxDrawable, interval); - else if (glXSwapIntervalMESA) - glXSwapIntervalMESA(interval); -+ window->setSwapInterval(interval); - } - } - -diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.h b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.h -index be9d3f5dcb..2a88fd6e59 100644 ---- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.h -+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.h -@@ -87,7 +87,6 @@ private: - GLXContext m_shareContext; - QSurfaceFormat m_format; - bool m_isPBufferCurrent; -- int m_swapInterval; - bool m_ownsContext; - GLenum (APIENTRY * m_getGraphicsResetStatus)(); - bool m_lost; -diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h -index f98cd8a74d..8258cc2dfa 100644 ---- a/src/plugins/platforms/xcb/qxcbwindow.h -+++ b/src/plugins/platforms/xcb/qxcbwindow.h -@@ -184,6 +184,9 @@ public: - static void setWindowTitle(const QXcbConnection *conn, xcb_window_t window, const QString &title); - static QString windowTitle(const QXcbConnection *conn, xcb_window_t window); - -+ int swapInterval() const { return m_swapInterval; } -+ void setSwapInterval(int swapInterval) { m_swapInterval = swapInterval; } -+ - public Q_SLOTS: - void updateSyncRequestCounter(); - -@@ -276,6 +279,7 @@ protected: - SyncState m_syncState = NoSyncNeeded; - - QXcbSyncWindowRequest *m_pendingSyncRequest = nullptr; -+ int m_swapInterval = -1; - }; - - class QXcbForeignWindow : public QXcbWindow --- -cgit v1.2.1 - diff --git a/source/l/qt5/patches/qtbase-zlib-compression.patch b/source/l/qt5/patches/qtbase-zlib-compression.patch deleted file mode 100644 index a6896a4d..00000000 --- a/source/l/qt5/patches/qtbase-zlib-compression.patch +++ /dev/null @@ -1,41 +0,0 @@ -Taken from: https://code.qt.io/cgit/qt/qtbase.git/patch/?id=cbdc9a77 - -From cbdc9a7786278c31fdb6eb465f32d0374349c1ef Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Thu, 20 Jun 2019 09:36:46 -0700 -Subject: RCC: Change the default compression to Zlib - -Codebases using QResource::isCompressed() and assuming it is Zlib break -if zstd is enabled. So change the default back to Zlib until Qt 6.0. - -[ChangeLog][Important Behavior Changes] RCC's default compression -algorithm was changed back to Zlib, as it was in all previous releases -until 5.13.0. The default will remain Zlib for all Qt 5.x releases but -will change in Qt 6.0. To activate Zstd compression for your resources, -either pass the --compress-algo=zstd option to the rcc tool or add the -XML attribute compression-algorithm="zstd" to the <file> tags in the -.qrc file. - -Task-number: QTBUG-76521 -Change-Id: Ief874765cd7b43798de3fffd15a9f56fd9ad1ad4 -Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> ---- - src/tools/rcc/rcc.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp -index 862e574f2d..011a7db810 100644 ---- a/src/tools/rcc/rcc.cpp -+++ b/src/tools/rcc/rcc.cpp -@@ -58,7 +58,7 @@ enum { - CONSTANT_COMPRESSTHRESHOLD_DEFAULT = 70 - }; - --#if QT_CONFIG(zstd) -+#if QT_CONFIG(zstd) && QT_VERSION >= QT_VERSION_CHECK(6,0,0) - # define CONSTANT_COMPRESSALGO_DEFAULT RCCResourceLibrary::CompressionAlgorithm::Zstd - #elif !defined(QT_NO_COMPRESS) - # define CONSTANT_COMPRESSALGO_DEFAULT RCCResourceLibrary::CompressionAlgorithm::Zlib --- -cgit v1.2.1 - |