From 4019fca886db6dc739735d4c595ac10905cb77b0 Mon Sep 17 00:00:00 2001 From: Bartlomiej Moskal Date: Fri, 18 Apr 2025 09:28:50 +0200 Subject: [PATCH] Android: Avoid lazy initialization of QAndroidPlatformServices In commit ff51ea5418d131248b07e327513b41dad1231f37, lazy initialization was introduced for QPlatformServices, including QAndroidPlatformServices. However, this approach causes a regression. When QAndroidPlatformServices is lazily initialized, the intent listener registration is delayed. As a result, handling custom URL schemes is affected - especially those coming from external applications. To address this issue, this commit removes lazy initialization for QAndroidPlatformServices. Fixes: QTBUG-135489 Pick-to: 6.8 6.5 Change-Id: I24becdf4ac573e7a2ca101cfbc27560d1eb4adef Reviewed-by: Assam Boudjelthia (cherry picked from commit 393c294e102bcd733141539552fda2f148e8b51b) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/android/qandroidplatformintegration.cpp | 4 +--- src/plugins/platforms/android/qandroidplatformintegration.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp index c48ebd878e2..e2f7e27da48 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp @@ -220,6 +220,7 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList ¶ m_mainThread = QThread::currentThread(); m_androidFDB = new QAndroidPlatformFontDatabase(); + m_androidPlatformServices.reset(new QAndroidPlatformServices); #ifndef QT_NO_CLIPBOARD m_androidPlatformClipboard = new QAndroidPlatformClipboard(); @@ -456,9 +457,6 @@ QPlatformNativeInterface *QAndroidPlatformIntegration::nativeInterface() const QPlatformServices *QAndroidPlatformIntegration::services() const { - if (m_androidPlatformServices.isNull()) - m_androidPlatformServices.reset(new QAndroidPlatformServices); - return m_androidPlatformServices.data(); } diff --git a/src/plugins/platforms/android/qandroidplatformintegration.h b/src/plugins/platforms/android/qandroidplatformintegration.h index 135790dda63..6c7251815e2 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.h +++ b/src/plugins/platforms/android/qandroidplatformintegration.h @@ -136,7 +136,7 @@ private: QPlatformFontDatabase *m_androidFDB; QAndroidPlatformNativeInterface *m_androidPlatformNativeInterface; - mutable QScopedPointer m_androidPlatformServices; + QScopedPointer m_androidPlatformServices; // Handling the multiple screens connected. Every display is identified // with an unique (autoincremented) displayID. The values of this ID will