diff options
author | Liang Qi <liang.qi@qt.io> | 2016-08-13 01:05:02 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-08-13 01:05:02 +0200 |
commit | 6b8f422c5e56b95aad298e1b984fb60fba1da282 (patch) | |
tree | 545dac994ef985cc91d92fa77da21581b6762c86 /src/plugins/platforms/android | |
parent | d04982dc84d66bec92b4b3767538676cf925ef17 (diff) | |
parent | d9e66f63a95b24ce3a7d2a30ccaf4dcab85d55a0 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
src/corelib/global/qglobal.cpp
src/corelib/io/qsettings.cpp
src/corelib/itemmodels/qstringlistmodel.cpp
tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
Change-Id: I1c6c306ef42c3c0234b19907914b19da706b4a03
Diffstat (limited to 'src/plugins/platforms/android')
-rw-r--r-- | src/plugins/platforms/android/androidjnimain.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index 6419ba2c51..677a2e2626 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -550,8 +550,11 @@ static void quitQtAndroidPlugin(JNIEnv *env, jclass /*clazz*/) static void terminateQt(JNIEnv *env, jclass /*clazz*/) { - sem_wait(&m_terminateSemaphore); - sem_destroy(&m_terminateSemaphore); + // QAndroidEventDispatcherStopper is stopped when the user uses the task manager to kill the application + if (!QAndroidEventDispatcherStopper::instance()->stopped()) { + sem_wait(&m_terminateSemaphore); + sem_destroy(&m_terminateSemaphore); + } env->DeleteGlobalRef(m_applicationClass); env->DeleteGlobalRef(m_classLoaderObject); if (m_resourcesObj) @@ -571,8 +574,11 @@ static void terminateQt(JNIEnv *env, jclass /*clazz*/) m_androidPlatformIntegration = nullptr; delete m_androidAssetsFileEngineHandler; m_androidAssetsFileEngineHandler = nullptr; - sem_post(&m_exitSemaphore); - pthread_join(m_qtAppThread, nullptr); + + if (!QAndroidEventDispatcherStopper::instance()->stopped()) { + sem_post(&m_exitSemaphore); + pthread_join(m_qtAppThread, nullptr); + } } static void setSurface(JNIEnv *env, jobject /*thiz*/, jint id, jobject jSurface, jint w, jint h) |