diff options
author | Pekka Gehör <pekka.gehor@qt.io> | 2021-04-04 09:59:41 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-05-03 08:12:03 +0000 |
commit | aca924f32c3dcd41f8a9527faa92666c6fbf9676 (patch) | |
tree | a0d140c6c7aadc9b67cb98a5aa3d190eb6f53dcd /src/plugins/platforms | |
parent | fba271339ba8565fed3f2e8a49d128266970d72b (diff) |
Android: Fix Application becomes unresponsive issue
Block key events until the plugin is running.
Fixes: QTBUG-67944
Change-Id: Iea47f2e94d850141834a7e8fc26218be2cacf660
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 2262a9cd2d135d5ea2ade42460496c88d8b2c292)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/android/androidjnimain.cpp | 5 | ||||
-rw-r--r-- | src/plugins/platforms/android/androidjnimain.h | 1 | ||||
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformintegration.cpp | 5 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index 7b1182066d..6dff19f3d5 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -223,6 +223,11 @@ namespace QtAndroid QJniObject::callStaticMethod<void>(m_applicationClass, "notifyObjectFocus","(I)V", accessibilityObjectId); } + void notifyQtAndroidPluginRunning(bool running) + { + QJniObject::callStaticMethod<void>(m_applicationClass, "notifyQtAndroidPluginRunning","(Z)V", running); + } + jobject createBitmap(QImage img, JNIEnv *env) { if (!m_bitmapClass) diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h index db7ba4367f..c7dd5c0ca0 100644 --- a/src/plugins/platforms/android/androidjnimain.h +++ b/src/plugins/platforms/android/androidjnimain.h @@ -103,6 +103,7 @@ namespace QtAndroid void notifyAccessibilityLocationChange(); void notifyObjectHide(uint accessibilityObjectId); void notifyObjectFocus(uint accessibilityObjectId); + void notifyQtAndroidPluginRunning(bool running); const char *classErrorMsgFmt(); const char *methodErrorMsgFmt(); diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp index 5f90a05648..3ab808c7f1 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp @@ -88,6 +88,7 @@ Qt::ScreenOrientation QAndroidPlatformIntegration::m_orientation = Qt::PrimaryOr Qt::ScreenOrientation QAndroidPlatformIntegration::m_nativeOrientation = Qt::PrimaryOrientation; bool QAndroidPlatformIntegration::m_showPasswordEnabled = false; +static bool m_running = false; void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &resource) { @@ -156,6 +157,10 @@ void QAndroidPlatformNativeInterface::customEvent(QEvent *event) api->accessibility()->setActive(QtAndroidAccessibility::isActive()); #endif // QT_NO_ACCESSIBILITY + if (!m_running) { + m_running = true; + QtAndroid::notifyQtAndroidPluginRunning(m_running); + } api->flushPendingUpdates(); } |