summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qjni.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:36:55 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:36:55 +0200
commit98d3e40fb7c88b670a93e73dace2d0f05a5f903c (patch)
treeb1292124a86c219fb434db4ec28e8f805ff52287 /src/corelib/kernel/qjni.cpp
parenta74e4b85be83e2da47f4a1d8fcf0e78079335b80 (diff)
parentbab494e4d046f5617d19f5fec35eeff94377c51f (diff)
Merge remote-tracking branch 'origin/stable' into dev
Conflicts: mkspecs/qnx-armv7le-qcc/qplatformdefs.h src/printsupport/kernel/qcups.cpp src/widgets/styles/qstyle.h tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp Change-Id: Ia41e13051169a6d4a8a1267548e7d47b859bb267
Diffstat (limited to 'src/corelib/kernel/qjni.cpp')
-rw-r--r--src/corelib/kernel/qjni.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/corelib/kernel/qjni.cpp b/src/corelib/kernel/qjni.cpp
index 623662a628..437205bf92 100644
--- a/src/corelib/kernel/qjni.cpp
+++ b/src/corelib/kernel/qjni.cpp
@@ -44,6 +44,7 @@
#include <QtCore/qthreadstorage.h>
#include <QtCore/qhash.h>
#include <QtCore/qstring.h>
+#include <QtCore/QThread>
QT_BEGIN_NAMESPACE
@@ -52,6 +53,11 @@ static inline QString keyBase()
return QStringLiteral("%1%2%3");
}
+static inline QByteArray threadBaseName()
+{
+ return QByteArrayLiteral("QtThread-");
+}
+
static QString qt_convertJString(jstring string)
{
QJNIEnvironmentPrivate env;
@@ -179,7 +185,10 @@ QJNIEnvironmentPrivate::QJNIEnvironmentPrivate()
{
JavaVM *vm = QtAndroidPrivate::javaVM();
if (vm->GetEnv((void**)&jniEnv, JNI_VERSION_1_6) == JNI_EDETACHED) {
- if (vm->AttachCurrentThread(&jniEnv, 0) != JNI_OK)
+ const qulonglong id = reinterpret_cast<qulonglong>(QThread::currentThreadId());
+ const QByteArray threadName = threadBaseName() + QByteArray::number(id);
+ JavaVMAttachArgs args = { JNI_VERSION_1_6, threadName, Q_NULLPTR };
+ if (vm->AttachCurrentThread(&jniEnv, &args) != JNI_OK)
return;
}