Date: Thursday, June 4, 2020 @ 14:02:32 Author: arojas Revision: 388280
archrelease: copy trunk to extra-x86_64 Added: qt5-base/repos/extra-x86_64/PKGBUILD (from rev 388279, qt5-base/trunk/PKGBUILD) qt5-base/repos/extra-x86_64/qt5-base-cflags.patch (from rev 388279, qt5-base/trunk/qt5-base-cflags.patch) qt5-base/repos/extra-x86_64/qtbug-74252.patch (from rev 388279, qt5-base/trunk/qtbug-74252.patch) Deleted: qt5-base/repos/extra-x86_64/PKGBUILD qt5-base/repos/extra-x86_64/qt5-base-cflags.patch -----------------------+ PKGBUILD | 209 ++++++++++++++++++++++++------------------------ qt5-base-cflags.patch | 92 ++++++++++----------- qtbug-74252.patch | 106 ++++++++++++++++++++++++ 3 files changed, 258 insertions(+), 149 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2020-06-04 14:01:56 UTC (rev 388279) +++ PKGBUILD 2020-06-04 14:02:32 UTC (rev 388280) @@ -1,103 +0,0 @@ -# Maintainer: Felix Yan <felixonm...@archlinux.org> -# Contributor: Andrea Scarpino <and...@archlinux.org> - -pkgbase=qt5-base -pkgname=(qt5-base qt5-xcb-private-headers) -_qtver=5.15.0 -pkgver=${_qtver/-/} -pkgrel=1 -arch=('x86_64') -url='https://www.qt.io' -license=('GPL3' 'LGPL3' 'FDL' 'custom') -pkgdesc='A cross-platform application and UI framework' -depends=('libjpeg-turbo' 'xcb-util-keysyms' 'xcb-util-renderutil' 'libgl' 'fontconfig' 'xdg-utils' - 'shared-mime-info' 'xcb-util-wm' 'libxrender' 'libxi' 'sqlite' 'xcb-util-image' 'mesa' - 'tslib' 'libinput' 'libxkbcommon-x11' 'libproxy' 'libcups' 'double-conversion' 'md4c') -makedepends=('libfbclient' 'mariadb-libs' 'sqlite' 'unixodbc' 'postgresql-libs' 'alsa-lib' 'gst-plugins-base-libs' - 'gtk3' 'libpulse' 'cups' 'freetds' 'vulkan-headers') -optdepends=('qt5-svg: to use SVG icon themes' - 'qt5-wayland: to run Qt applications in a Wayland session' - 'qt5-translations: for some native UI translations' - 'postgresql-libs: PostgreSQL driver' - 'mariadb-libs: MariaDB driver' - 'unixodbc: ODBC driver' - 'libfbclient: Firebird/iBase driver' - 'freetds: MS SQL driver' - 'gtk3: GTK platform plugin' - 'perl: for fixqt4headers and syncqt') -conflicts=('qtchooser') -groups=('qt' 'qt5') -_pkgfqn="${pkgbase/5-/}-everywhere-src-${_qtver}" -source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz" - "qt5-base-QTBUG-82910.patch::https://codereview.qt-project.org/gitweb?p=qt/qtbase.git;a=patch;h=54aa63be9b74e8de72db9efbe6809ab1a97b29a7" - qt5-base-cflags.patch) -sha256sums=('9e7af10aece15fa9500369efde69cb220eee8ec3a6818afe01ce1e7d484824c5' - 'abb94453c9fe54fde4811bc5475b88796c8db1f5cd75ddc68918aff20139b1aa' - 'cf707cd970650f8b60f8897692b36708ded9ba116723ec8fcd885576783fe85c') - -prepare() { - cd ${_pkgfqn} - - patch -p1 -i ../qt5-base-QTBUG-82910.patch # https://codereview.qt-project.org/c/qt/qtbase/+/299182 - patch -p1 -i ../qt5-base-cflags.patch # Use system CFLAGS -} - -build() { - cd ${_pkgfqn} - - ./configure -confirm-license -opensource -v \ - -prefix /usr \ - -docdir /usr/share/doc/qt \ - -headerdir /usr/include/qt \ - -archdatadir /usr/lib/qt \ - -datadir /usr/share/qt \ - -sysconfdir /etc/xdg \ - -examplesdir /usr/share/doc/qt/examples \ - -plugin-sql-{psql,mysql,sqlite,odbc,ibase} \ - -system-sqlite \ - -openssl-linked \ - -nomake examples \ - -no-rpath \ - -dbus-linked \ - -system-harfbuzz \ - -journald \ - -no-mimetype-database \ - -no-use-gold-linker \ - -reduce-relocations - make -} - -package_qt5-base() { - pkgdesc='A cross-platform application and UI framework' - - cd ${_pkgfqn} - make INSTALL_ROOT="${pkgdir}" install - - install -Dm644 LICENSE* -t "$pkgdir"/usr/share/licenses/$pkgbase - - # Drop QMAKE_PRL_BUILD_DIR because reference the build dir - find "${pkgdir}/usr/lib" -type f -name '*.prl' \ - -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; - - # Fix wrong qmake path in pri file - sed -i "s|${srcdir}/${_pkgfqn}|/usr|" \ - "${pkgdir}"/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri - - # Symlinks for backwards compatibility - for b in "${pkgdir}"/usr/bin/*; do - ln -s $(basename $b) "${pkgdir}"/usr/bin/$(basename $b)-qt5 - done -} - -package_qt5-xcb-private-headers() { - pkgdesc='Private headers for Qt5 Xcb' - - depends=("qt5-base=$pkgver") - optdepends=() - groups=() - conflicts=() - - cd ${_pkgfqn} - install -d -m755 "$pkgdir"/usr/include/qtxcb-private - cp -r src/plugins/platforms/xcb/*.h "$pkgdir"/usr/include/qtxcb-private/ -} Copied: qt5-base/repos/extra-x86_64/PKGBUILD (from rev 388279, qt5-base/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2020-06-04 14:02:32 UTC (rev 388280) @@ -0,0 +1,106 @@ +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Andrea Scarpino <and...@archlinux.org> + +pkgbase=qt5-base +pkgname=(qt5-base qt5-xcb-private-headers) +_qtver=5.15.0 +pkgver=${_qtver/-/} +pkgrel=2 +arch=('x86_64') +url='https://www.qt.io' +license=('GPL3' 'LGPL3' 'FDL' 'custom') +pkgdesc='A cross-platform application and UI framework' +depends=('libjpeg-turbo' 'xcb-util-keysyms' 'xcb-util-renderutil' 'libgl' 'fontconfig' 'xdg-utils' + 'shared-mime-info' 'xcb-util-wm' 'libxrender' 'libxi' 'sqlite' 'xcb-util-image' 'mesa' + 'tslib' 'libinput' 'libxkbcommon-x11' 'libproxy' 'libcups' 'double-conversion' 'md4c') +makedepends=('libfbclient' 'mariadb-libs' 'sqlite' 'unixodbc' 'postgresql-libs' 'alsa-lib' 'gst-plugins-base-libs' + 'gtk3' 'libpulse' 'cups' 'freetds' 'vulkan-headers') +optdepends=('qt5-svg: to use SVG icon themes' + 'qt5-wayland: to run Qt applications in a Wayland session' + 'qt5-translations: for some native UI translations' + 'postgresql-libs: PostgreSQL driver' + 'mariadb-libs: MariaDB driver' + 'unixodbc: ODBC driver' + 'libfbclient: Firebird/iBase driver' + 'freetds: MS SQL driver' + 'gtk3: GTK platform plugin' + 'perl: for fixqt4headers and syncqt') +conflicts=('qtchooser') +groups=('qt' 'qt5') +_pkgfqn="${pkgbase/5-/}-everywhere-src-${_qtver}" +source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz" + "qt5-base-QTBUG-82910.patch::https://codereview.qt-project.org/gitweb?p=qt/qtbase.git;a=patch;h=54aa63be9b74e8de72db9efbe6809ab1a97b29a7" + qt5-base-cflags.patch + qtbug-74252.patch) +sha256sums=('9e7af10aece15fa9500369efde69cb220eee8ec3a6818afe01ce1e7d484824c5' + 'abb94453c9fe54fde4811bc5475b88796c8db1f5cd75ddc68918aff20139b1aa' + 'cf707cd970650f8b60f8897692b36708ded9ba116723ec8fcd885576783fe85c' + '0c489d2faedd35670232a2c028c5c78a606ab81bb6f40f58e3cfe2bc6b6ac3b2') + +prepare() { + cd ${_pkgfqn} + + patch -p1 -i ../qt5-base-QTBUG-82910.patch # https://codereview.qt-project.org/c/qt/qtbase/+/299182 + patch -p1 -i ../qtbug-74252.patch # Fix displaying custom icons + patch -p1 -i ../qt5-base-cflags.patch # Use system CFLAGS +} + +build() { + cd ${_pkgfqn} + + ./configure -confirm-license -opensource -v \ + -prefix /usr \ + -docdir /usr/share/doc/qt \ + -headerdir /usr/include/qt \ + -archdatadir /usr/lib/qt \ + -datadir /usr/share/qt \ + -sysconfdir /etc/xdg \ + -examplesdir /usr/share/doc/qt/examples \ + -plugin-sql-{psql,mysql,sqlite,odbc,ibase} \ + -system-sqlite \ + -openssl-linked \ + -nomake examples \ + -no-rpath \ + -dbus-linked \ + -system-harfbuzz \ + -journald \ + -no-mimetype-database \ + -no-use-gold-linker \ + -reduce-relocations + make +} + +package_qt5-base() { + pkgdesc='A cross-platform application and UI framework' + + cd ${_pkgfqn} + make INSTALL_ROOT="${pkgdir}" install + + install -Dm644 LICENSE* -t "$pkgdir"/usr/share/licenses/$pkgbase + + # Drop QMAKE_PRL_BUILD_DIR because reference the build dir + find "${pkgdir}/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; + + # Fix wrong qmake path in pri file + sed -i "s|${srcdir}/${_pkgfqn}|/usr|" \ + "${pkgdir}"/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri + + # Symlinks for backwards compatibility + for b in "${pkgdir}"/usr/bin/*; do + ln -s $(basename $b) "${pkgdir}"/usr/bin/$(basename $b)-qt5 + done +} + +package_qt5-xcb-private-headers() { + pkgdesc='Private headers for Qt5 Xcb' + + depends=("qt5-base=$pkgver") + optdepends=() + groups=() + conflicts=() + + cd ${_pkgfqn} + install -d -m755 "$pkgdir"/usr/include/qtxcb-private + cp -r src/plugins/platforms/xcb/*.h "$pkgdir"/usr/include/qtxcb-private/ +} Deleted: qt5-base-cflags.patch =================================================================== --- qt5-base-cflags.patch 2020-06-04 14:01:56 UTC (rev 388279) +++ qt5-base-cflags.patch 2020-06-04 14:02:32 UTC (rev 388280) @@ -1,46 +0,0 @@ -diff --git a/mkspecs/common/g++-unix.conf b/mkspecs/common/g++-unix.conf -index a493cd5984..41342f5020 100644 ---- a/mkspecs/common/g++-unix.conf -+++ b/mkspecs/common/g++-unix.conf -@@ -10,5 +10,6 @@ - - include(g++-base.conf) - --QMAKE_LFLAGS_RELEASE += -Wl,-O1 -+SYSTEM_LDFLAGS = $$(LDFLAGS) -+!isEmpty(SYSTEM_LDFLAGS) { eval(QMAKE_LFLAGS_RELEASE += $$(LDFLAGS)) } else { QMAKE_LFLAGS_RELEASE += -Wl,-O1 } - QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined -diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf -index 1f919d270a..7ef6046326 100644 ---- a/mkspecs/common/gcc-base.conf -+++ b/mkspecs/common/gcc-base.conf -@@ -40,9 +40,11 @@ QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os - QMAKE_CFLAGS_DEPS += -M - QMAKE_CFLAGS_WARN_ON += -Wall -Wextra - QMAKE_CFLAGS_WARN_OFF += -w --QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE --QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g --QMAKE_CFLAGS_DEBUG += -g -+SYSTEM_CFLAGS = $$(CFLAGS) -+SYSTEM_DEBUG_CFLAGS = $$(DEBUG_CFLAGS) -+!isEmpty(SYSTEM_CFLAGS) { eval(QMAKE_CFLAGS_RELEASE += $$(CPPFLAGS) $$(CFLAGS)) } else { QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE } -+!isEmpty(SYSTEM_CFLAGS) { eval(QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$(CPPFLAGS) -g $$(CFLAGS)) } else { QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g } -+!isEmpty(SYSTEM_DEBUG_CFLAGS) { eval(QMAKE_CFLAGS_DEBUG += $$(DEBUG_CFLAGS)) } else { QMAKE_CFLAGS_DEBUG += -g } - QMAKE_CFLAGS_SHLIB += $$QMAKE_CFLAGS_PIC - QMAKE_CFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_PIC - QMAKE_CFLAGS_APP += $$QMAKE_CFLAGS_PIC -@@ -59,9 +61,11 @@ QMAKE_CXXFLAGS += $$QMAKE_CFLAGS - QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS - QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON - QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF --QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE --QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO --QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG -+SYSTEM_CXXFLAGS = $$(CXXFLAGS) -+SYSTEM_DEBUG_CXXFLAGS = $$(DEBUG_CXXFLAGS) -+!isEmpty(SYSTEM_CXXFLAGS) { eval(QMAKE_CXXFLAGS_RELEASE += $$(CPPFLAGS) $$(CXXFLAGS)) } else { QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE } -+!isEmpty(SYSTEM_CXXFLAGS) { eval(QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$(CPPFLAGS) -g $$(CXXFLAGS)) } else { QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g } -+!isEmpty(SYSTEM_DEBUG_CXXFLAGS) { eval(QMAKE_CXXFLAGS_DEBUG += $$(DEBUG_CXXFLAGS)) } else { QMAKE_CXXFLAGS_DEBUG += -g } - QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB - QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB - QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP Copied: qt5-base/repos/extra-x86_64/qt5-base-cflags.patch (from rev 388279, qt5-base/trunk/qt5-base-cflags.patch) =================================================================== --- qt5-base-cflags.patch (rev 0) +++ qt5-base-cflags.patch 2020-06-04 14:02:32 UTC (rev 388280) @@ -0,0 +1,46 @@ +diff --git a/mkspecs/common/g++-unix.conf b/mkspecs/common/g++-unix.conf +index a493cd5984..41342f5020 100644 +--- a/mkspecs/common/g++-unix.conf ++++ b/mkspecs/common/g++-unix.conf +@@ -10,5 +10,6 @@ + + include(g++-base.conf) + +-QMAKE_LFLAGS_RELEASE += -Wl,-O1 ++SYSTEM_LDFLAGS = $$(LDFLAGS) ++!isEmpty(SYSTEM_LDFLAGS) { eval(QMAKE_LFLAGS_RELEASE += $$(LDFLAGS)) } else { QMAKE_LFLAGS_RELEASE += -Wl,-O1 } + QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined +diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf +index 1f919d270a..7ef6046326 100644 +--- a/mkspecs/common/gcc-base.conf ++++ b/mkspecs/common/gcc-base.conf +@@ -40,9 +40,11 @@ QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os + QMAKE_CFLAGS_DEPS += -M + QMAKE_CFLAGS_WARN_ON += -Wall -Wextra + QMAKE_CFLAGS_WARN_OFF += -w +-QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE +-QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g +-QMAKE_CFLAGS_DEBUG += -g ++SYSTEM_CFLAGS = $$(CFLAGS) ++SYSTEM_DEBUG_CFLAGS = $$(DEBUG_CFLAGS) ++!isEmpty(SYSTEM_CFLAGS) { eval(QMAKE_CFLAGS_RELEASE += $$(CPPFLAGS) $$(CFLAGS)) } else { QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE } ++!isEmpty(SYSTEM_CFLAGS) { eval(QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$(CPPFLAGS) -g $$(CFLAGS)) } else { QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g } ++!isEmpty(SYSTEM_DEBUG_CFLAGS) { eval(QMAKE_CFLAGS_DEBUG += $$(DEBUG_CFLAGS)) } else { QMAKE_CFLAGS_DEBUG += -g } + QMAKE_CFLAGS_SHLIB += $$QMAKE_CFLAGS_PIC + QMAKE_CFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_PIC + QMAKE_CFLAGS_APP += $$QMAKE_CFLAGS_PIC +@@ -59,9 +61,11 @@ QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS + QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON + QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF +-QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE +-QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +-QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG ++SYSTEM_CXXFLAGS = $$(CXXFLAGS) ++SYSTEM_DEBUG_CXXFLAGS = $$(DEBUG_CXXFLAGS) ++!isEmpty(SYSTEM_CXXFLAGS) { eval(QMAKE_CXXFLAGS_RELEASE += $$(CPPFLAGS) $$(CXXFLAGS)) } else { QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE } ++!isEmpty(SYSTEM_CXXFLAGS) { eval(QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$(CPPFLAGS) -g $$(CXXFLAGS)) } else { QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g } ++!isEmpty(SYSTEM_DEBUG_CXXFLAGS) { eval(QMAKE_CXXFLAGS_DEBUG += $$(DEBUG_CXXFLAGS)) } else { QMAKE_CXXFLAGS_DEBUG += -g } + QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB + QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB + QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP Copied: qt5-base/repos/extra-x86_64/qtbug-74252.patch (from rev 388279, qt5-base/trunk/qtbug-74252.patch) =================================================================== --- qtbug-74252.patch (rev 0) +++ qtbug-74252.patch 2020-06-04 14:02:32 UTC (rev 388280) @@ -0,0 +1,106 @@ +From add92a551cf601b5c9e074046326f95ccc38062e Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aa...@kde.org> +Date: Sat, 23 May 2020 01:35:18 +0200 +Subject: [PATCH] Do not fully initialize QIconLoader when setting the fallback + theme + +We need this because without this patch you get bugs both +if you call QIcon::setFallbackThemeName before creating the QGuiApplication and +if you call QIcon::setFallbackThemeName after creating QGuiApplication + +Why do you get a bug if you call QIconLoader::setFallbackThemeName +before creating the QGuiApplication: + * QIcon::setFallbackThemeName calls QIconLoader::instance + * QIconLoader::instance calls QIconLoader::ensureInitialized + * QIconLoader::ensureInitialized calls systemThemeName + * systemThemeName asks the current QPlatformTheme for its + QPlatformTheme::SystemIconThemeName + * But since we're calling this before creating the QGuiApplication + there is no current QPlatformTheme yet, so systemThemeName + is set to empty, which is obviously not what we want + +Why do you get a bug if you call QIconLoader::setFallbackThemeName +after creating the QGuiApplication: + * QGuiApplicationPrivate::init calls + QGuiApplicationPrivate::createPlatformIntegration + * QGuiApplicationPrivate::createPlatformIntegration sets the + current QPlatformTheme and at the end of the very same function + uses QIcon::fromTheme + * Since we haven't called QIconLoader::setFallbackThemeName yet + there is at least one icon lookup that doesn't take + the fallback theme we would like to have into account + +This patch makes it so calling QIconLoader::setFallbackThemeName +before creating the QGuiApplication works. + +The only thing we want to do from QIcon::setFallbackThemeName is set +the internal m_userFallbackTheme, it doesn't care about doing +further initialization of QIconLoader, if it's done, great it's done, +if it is not initialized yet, great it will be initialized later +when someone actually tries to use the QIconloader. + +So it's OK for ensureInitialized() to return early if there is no +platform theme yet, because it will be called again later. + +Pick-to: 5.12 +Pick-to: 5.15 +Fixes: QTBUG-74252 +Change-Id: I65268fc3d3d0bd282d76c76cf75e495bcc9d1a30 +Done-with: Albert Astals Cid <albert.astals....@kdab.com> +Reviewed-by: Albert Astals Cid <albert.astals....@kdab.com> +Reviewed-by: Shawn Rutledge <shawn.rutle...@qt.io> +--- + src/gui/image/qicon.cpp | 3 +++ + src/gui/image/qiconloader.cpp | 15 ++++++++++++--- + 2 files changed, 15 insertions(+), 3 deletions(-) + +diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp +index 36f499711e9..91da21c477d 100644 +--- a/src/gui/image/qicon.cpp ++++ b/src/gui/image/qicon.cpp +@@ -1238,6 +1238,9 @@ QString QIcon::fallbackThemeName() + themeSearchPath() containing an index.theme + file describing its contents. + ++ \note This should be done before creating \l QGuiApplication, to ensure ++ correct initialization. ++ + \sa fallbackThemeName(), themeSearchPaths(), themeName() + */ + void QIcon::setFallbackThemeName(const QString &name) +diff --git a/src/gui/image/qiconloader.cpp b/src/gui/image/qiconloader.cpp +index 15ab1b3cd90..3fa3bb9c598 100644 +--- a/src/gui/image/qiconloader.cpp ++++ b/src/gui/image/qiconloader.cpp +@@ -112,10 +112,9 @@ extern QFactoryLoader *qt_iconEngineFactoryLoader(); // qicon.cpp + void QIconLoader::ensureInitialized() + { + if (!m_initialized) { ++ if (!QGuiApplicationPrivate::platformTheme()) ++ return; // it's too early: try again later (QTBUG-74252) + m_initialized = true; +- +- Q_ASSERT(qApp); +- + m_systemTheme = systemThemeName(); + + if (m_systemTheme.isEmpty()) +@@ -125,6 +124,16 @@ void QIconLoader::ensureInitialized() + } + } + ++/*! ++ \internal ++ Gets an instance. ++ ++ \l QIcon::setFallbackThemeName() should be called before QGuiApplication is ++ created, to avoid a race condition (QTBUG-74252). When this function is ++ called from there, ensureInitialized() does not succeed because there ++ is no QPlatformTheme yet, so systemThemeName() is empty, and we don't want ++ m_systemTheme to get intialized to the fallback theme instead of the normal one. ++*/ + QIconLoader *QIconLoader::instance() + { + iconLoaderInstance()->ensureInitialized(); +-- +2.16.3