Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp
- index b5783bb67a..2211eb07d9 100644
- --- a/src/plugins/platforms/android/androidjniaccessibility.cpp
- +++ b/src/plugins/platforms/android/androidjniaccessibility.cpp
- @@ -37,6 +37,7 @@
- **
- ****************************************************************************/
- +#include "androiddeadlockprotector.h"
- #include "androidjniaccessibility.h"
- #include "androidjnimain.h"
- #include "qandroidplatformintegration.h"
- @@ -96,7 +97,21 @@ namespace QtAndroidAccessibility
- template <typename Func, typename Ret>
- void runInObjectContext(QObject *context, Func &&func, Ret *retVal)
- {
- - QMetaObject::invokeMethod(context, func, Qt::BlockingQueuedConnection, retVal);
- + AndroidDeadlockProtector protector;
- + if (!protector.acquire()) {
- + __android_log_print(ANDROID_LOG_WARN, m_qtTag,
- + "Could not run accessibility call in object context, accessing "
- + "main thread could lead to deadlock");
- + return;
- + }
- +
- + if (!QtAndroid::blockEventLoopsWhenSuspended()
- + || QGuiApplication::applicationState() != Qt::ApplicationSuspended) {
- + QMetaObject::invokeMethod(context, func, Qt::BlockingQueuedConnection, retVal);
- + } else {
- + __android_log_print(ANDROID_LOG_WARN, m_qtTag,
- + "Could not run accessibility call in object context, event loop suspended.");
- + }
- }
- void initialize()
Advertisement
Add Comment
Please, Sign In to add comment