summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android/androidbackendregister.cpp
diff options
context:
space:
mode:
authorLars Schmertmann <Lars.Schmertmann@governikus.de>2024-12-25 13:41:29 +0100
committerLars Schmertmann <Lars.Schmertmann@governikus.de>2025-01-04 15:47:29 +0100
commit9903242ecab82c1ed72dcaf90e90a171c942a84a (patch)
tree8ad6df491f1fce8e5871cbe17da20d7cc7a6ca2c /src/plugins/platforms/android/androidbackendregister.cpp
parent3928d53003220743eea19cd019b3754ab55094ba (diff)
Android: Fix freeze on start when the activity was destroyed before
This can be tested by enabling "Don't keep activities" in the developer options. With this option Android will immediately destroy the activity when it is moved to the background. In this case registerBackends will be called the first time before the BackendRegister was created. Because m_backendsRegistered was set to true even if it failed, the final call has no effect. So we need to ensure to set m_backendsRegistered only if a BackendRegister is available. Fixes: QTBUG-132085 Pick-to: 6.9 6.8 Change-Id: I2ea1c0e0737c982594ceb06cbaf540399c45e3f4 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/plugins/platforms/android/androidbackendregister.cpp')
-rw-r--r--src/plugins/platforms/android/androidbackendregister.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/plugins/platforms/android/androidbackendregister.cpp b/src/plugins/platforms/android/androidbackendregister.cpp
index bfd86138aa5..98f0ea59356 100644
--- a/src/plugins/platforms/android/androidbackendregister.cpp
+++ b/src/plugins/platforms/android/androidbackendregister.cpp
@@ -14,10 +14,16 @@ Q_DECLARE_JNI_CLASS(BackendRegister, "org/qtproject/qt/android/BackendRegister")
bool AndroidBackendRegister::registerNatives()
{
return QtJniTypes::BackendRegister::registerNativeMethods(
- { Q_JNI_NATIVE_SCOPED_METHOD(registerBackend, AndroidBackendRegister),
+ { Q_JNI_NATIVE_SCOPED_METHOD(isNull, AndroidBackendRegister),
+ Q_JNI_NATIVE_SCOPED_METHOD(registerBackend, AndroidBackendRegister),
Q_JNI_NATIVE_SCOPED_METHOD(unregisterBackend, AndroidBackendRegister) });
}
+jboolean AndroidBackendRegister::isNull(JNIEnv *, jclass)
+{
+ return QtAndroid::backendRegister() == nullptr;
+}
+
void AndroidBackendRegister::registerBackend(JNIEnv *, jclass, jclass interfaceClass,
jobject interface)
{