diff options
| author | Assam Boudjelthia <[email protected]> | 2025-08-21 17:41:31 +0300 |
|---|---|---|
| committer | Assam Boudjelthia <[email protected]> | 2025-08-26 22:57:44 +0300 |
| commit | 60506aa8b7489d8cf60cfaa357fb224d19b62e13 (patch) | |
| tree | ba7547b6e7f9427d25d72c1bca3b91c8f0ec8b9c /src/plugins/platforms/android | |
| parent | f149f306682abc30094d51d0285166ff2f4560dc (diff) | |
Android: add logging for AndroidDeadlockProtector
Have AndroidDeadlockProtector instance provide a string as an
identifier of where it's going to be acquired so that when
another code try to acquire we can have better logs of what can
potentially go wrong.
Pick-to: 6.10
Change-Id: I14abc0058831c5f23f2d96c6ce0231a6e0cc8f68
Reviewed-by: Ville Voutilainen <[email protected]>
Diffstat (limited to 'src/plugins/platforms/android')
5 files changed, 16 insertions, 6 deletions
diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp index 6473fd7eed8..add32f19e4f 100644 --- a/src/plugins/platforms/android/androidjniaccessibility.cpp +++ b/src/plugins/platforms/android/androidjniaccessibility.cpp @@ -63,7 +63,8 @@ namespace QtAndroidAccessibility template <typename Func, typename Ret> void runInObjectContext(QObject *context, Func &&func, Ret *retVal) { - QtAndroidPrivate::AndroidDeadlockProtector protector; + QtAndroidPrivate::AndroidDeadlockProtector protector( + u"QtAndroidAccessibility::runInObjectContext()"_s); if (!protector.acquire()) { __android_log_print(ANDROID_LOG_WARN, m_qtTag, "Could not run accessibility call in object context, accessing " diff --git a/src/plugins/platforms/android/qandroideventdispatcher.cpp b/src/plugins/platforms/android/qandroideventdispatcher.cpp index b620ce95d7f..4e088ab0d32 100644 --- a/src/plugins/platforms/android/qandroideventdispatcher.cpp +++ b/src/plugins/platforms/android/qandroideventdispatcher.cpp @@ -4,6 +4,8 @@ #include "qandroideventdispatcher.h" #include "androidjnimain.h" +using namespace Qt::StringLiterals; + QAndroidEventDispatcher::QAndroidEventDispatcher(QObject *parent) : QUnixEventDispatcherQPA(parent) { @@ -52,7 +54,8 @@ bool QAndroidEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags flags |= QEventLoop::ExcludeSocketNotifiers | QEventLoop::X11ExcludeTimers; { - QtAndroidPrivate::AndroidDeadlockProtector protector; + QtAndroidPrivate::AndroidDeadlockProtector protector( + u"QAndroidEventDispatcher::processEvents()"_s); if (m_stopRequest.testAndSetAcquire(StopRequest, Stopping) && protector.acquire()) { m_semaphore.acquire(); wakeUp(); diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index ff0fe664514..ecbbddb2e36 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -26,6 +26,8 @@ QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + namespace { class BatchEditLock @@ -68,7 +70,8 @@ static jfieldID m_textFieldID = 0; static void runOnQtThread(const std::function<void()> &func) { - QtAndroidPrivate::AndroidDeadlockProtector protector; + QtAndroidPrivate::AndroidDeadlockProtector protector( + u"QAndroidInputContext::runOnQtThread()"_s); if (!protector.acquire()) return; QMetaObject::invokeMethod(m_androidInputContext, "safeCall", Qt::BlockingQueuedConnection, Q_ARG(std::function<void()>, func)); diff --git a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp index 95a4963756d..75a1c981e6c 100644 --- a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp @@ -60,9 +60,9 @@ EGLSurface QAndroidPlatformOpenGLWindow::eglSurface(EGLConfig config) // If we haven't called createSurface() yet, call it and wait until Android has created // the Surface if (!m_surfaceCreated) { - QtAndroidPrivate::AndroidDeadlockProtector protector; + static constexpr char funcName[] = "QAndroidPlatformOpenGLWindow::eglSurface()"; + QtAndroidPrivate::AndroidDeadlockProtector protector(funcName); if (!protector.acquire()) { - static constexpr char funcName[] = "QAndroidPlatformOpenGLWindow::eglSurface()"; qFatal("Failed to acquire deadlock protector for %s.", funcName); return m_eglSurface; } diff --git a/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp b/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp index b45d473c7e3..96bdc2f63f5 100644 --- a/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp @@ -15,6 +15,8 @@ QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + QAndroidPlatformVulkanWindow::QAndroidPlatformVulkanWindow(QWindow *window) : QAndroidPlatformWindow(window), m_nativeWindow(nullptr), @@ -88,7 +90,8 @@ VkSurfaceKHR *QAndroidPlatformVulkanWindow::vkSurface() QMutexLocker lock(&m_surfaceMutex); if (!m_surfaceCreated) { - QtAndroidPrivate::AndroidDeadlockProtector protector; + QtAndroidPrivate::AndroidDeadlockProtector protector( + u"QAndroidPlatformVulkanWindow::vkSurface()"_s); if (!protector.acquire()) return &m_vkSurface; createSurface(); |
