From 3f7e3983d53c01f057af0335cf9db4e736f1552a Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Tue, 13 Apr 2021 11:54:33 +0300 Subject: Replace conversion operator by operator* in QJniEnvironment Since conversion operators do implicit conversion that might bring some potential issues while using the API, let's stick to having an operator* instead. Change-Id: Ie7ad5537958944b8d1c11d69fbd30284b4b0344d Reviewed-by: Volker Hilsheimer Reviewed-by: Alex Blasche (cherry picked from commit 13592385723a9b81b3715b5344bdd04e6a393a12) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qjnienvironment.cpp | 22 +++-- src/corelib/kernel/qjnienvironment.h | 6 +- src/corelib/kernel/qjniobject.cpp | 106 ++++++++++----------- src/plugins/platforms/android/androidjnimain.cpp | 6 +- .../platforms/android/qandroidplatformmenu.cpp | 2 +- .../android/qandroidplatformopenglwindow.cpp | 2 +- .../kernel/qjnienvironment/tst_qjnienvironment.cpp | 9 +- 7 files changed, 83 insertions(+), 70 deletions(-) diff --git a/src/corelib/kernel/qjnienvironment.cpp b/src/corelib/kernel/qjnienvironment.cpp index 0c9aa27e82..522c97bdc1 100644 --- a/src/corelib/kernel/qjnienvironment.cpp +++ b/src/corelib/kernel/qjnienvironment.cpp @@ -136,21 +136,31 @@ QJniEnvironment::~QJniEnvironment() } /*! - \fn JNIEnv *QJniEnvironment::operator->() + \fn JNIEnv *QJniEnvironment::operator->() const - Provides access to the QJniEnvironment's JNIEnv pointer. + Provides access to the JNI Environment's \c JNIEnv pointer. */ -JNIEnv *QJniEnvironment::operator->() +JNIEnv *QJniEnvironment::operator->() const { return d->jniEnv; } /*! - \fn QJniEnvironment::operator JNIEnv *() const + \fn JNIEnv &QJniEnvironment::operator*() const - Returns the JNI Environment pointer. + Returns the JNI Environment's \c JNIEnv object. */ -QJniEnvironment::operator JNIEnv* () const +JNIEnv &QJniEnvironment::operator*() const +{ + return *d->jniEnv; +} + +/*! + \fn JNIEnv *QJniEnvironment::jniEnv() + + Returns the JNI Environment's \c JNIEnv pointer. +*/ +JNIEnv *QJniEnvironment::jniEnv() const { return d->jniEnv; } diff --git a/src/corelib/kernel/qjnienvironment.h b/src/corelib/kernel/qjnienvironment.h index a098e6fe07..a9a3e99097 100644 --- a/src/corelib/kernel/qjnienvironment.h +++ b/src/corelib/kernel/qjnienvironment.h @@ -60,8 +60,9 @@ class Q_CORE_EXPORT QJniEnvironment public: QJniEnvironment(); ~QJniEnvironment(); - JNIEnv *operator->(); - operator JNIEnv *() const; + JNIEnv *operator->() const; + JNIEnv &operator*() const; + JNIEnv *jniEnv() const; jclass findClass(const char *className); static JavaVM *javaVM(); bool registerNativeMethods(const char *className, JNINativeMethod methods[], int size); @@ -74,7 +75,6 @@ public: bool checkAndClearExceptions(OutputMode outputMode = OutputMode::Verbose); static bool checkAndClearExceptions(JNIEnv *env, OutputMode outputMode = OutputMode::Verbose); - private: Q_DISABLE_COPY_MOVE(QJniEnvironment) QScopedPointer d; diff --git a/src/corelib/kernel/qjniobject.cpp b/src/corelib/kernel/qjniobject.cpp index 8a09ae5f5f..9bd71c061e 100644 --- a/src/corelib/kernel/qjniobject.cpp +++ b/src/corelib/kernel/qjniobject.cpp @@ -489,7 +489,7 @@ jclass QtAndroidPrivate::findClass(const char *className, JNIEnv *env) } if (!clazz) // We didn't get an env. pointer or we got one with the WRONG class loader... - clazz = loadClass(classDotEnc, QJniEnvironment(), true); + clazz = loadClass(classDotEnc, QJniEnvironment().jniEnv(), true); return clazz; } @@ -538,11 +538,11 @@ QJniObject::QJniObject(const char *className) { QJniEnvironment env; d->m_className = toBinaryEncClassName(className); - d->m_jclass = loadClass(d->m_className, env, true); + d->m_jclass = loadClass(d->m_className, env.jniEnv(), true); d->m_own_jclass = false; if (d->m_jclass) { // get default constructor - jmethodID constructorId = getCachedMethodID(env, d->m_jclass, d->m_className, "", "()V"); + jmethodID constructorId = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, "", "()V"); if (constructorId) { jobject obj = env->NewObject(d->m_jclass, constructorId); if (obj) { @@ -571,10 +571,10 @@ QJniObject::QJniObject(const char *className, const char *signature, ...) { QJniEnvironment env; d->m_className = toBinaryEncClassName(className); - d->m_jclass = loadClass(d->m_className, env, true); + d->m_jclass = loadClass(d->m_className, env.jniEnv(), true); d->m_own_jclass = false; if (d->m_jclass) { - jmethodID constructorId = getCachedMethodID(env, d->m_jclass, d->m_className, "", signature); + jmethodID constructorId = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, "", signature); if (constructorId) { va_list args; va_start(args, signature); @@ -593,10 +593,10 @@ QJniObject::QJniObject(const char *className, const char *signature, const QVaLi { QJniEnvironment env; d->m_className = toBinaryEncClassName(className); - d->m_jclass = loadClass(d->m_className, env, true); + d->m_jclass = loadClass(d->m_className, env.jniEnv(), true); d->m_own_jclass = false; if (d->m_jclass) { - jmethodID constructorId = getCachedMethodID(env, d->m_jclass, d->m_className, "", signature); + jmethodID constructorId = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, "", signature); if (constructorId) { jobject obj = env->NewObjectV(d->m_jclass, constructorId, args); if (obj) { @@ -626,7 +626,7 @@ QJniObject::QJniObject(jclass clazz, const char *signature, ...) if (clazz) { d->m_jclass = static_cast(env->NewGlobalRef(clazz)); if (d->m_jclass) { - jmethodID constructorId = getMethodID(env, d->m_jclass, "", signature); + jmethodID constructorId = getMethodID(env.jniEnv(), d->m_jclass, "", signature); if (constructorId) { va_list args; va_start(args, signature); @@ -658,7 +658,7 @@ QJniObject::QJniObject(jclass clazz) d->m_jclass = static_cast(env->NewGlobalRef(clazz)); if (d->m_jclass) { // get default constructor - jmethodID constructorId = getMethodID(env, d->m_jclass, "", "()V"); + jmethodID constructorId = getMethodID(env.jniEnv(), d->m_jclass, "", "()V"); if (constructorId) { jobject obj = env->NewObject(d->m_jclass, constructorId); if (obj) { @@ -676,7 +676,7 @@ QJniObject::QJniObject(jclass clazz, const char *signature, const QVaListPrivate if (clazz) { d->m_jclass = static_cast(env->NewGlobalRef(clazz)); if (d->m_jclass) { - jmethodID constructorId = getMethodID(env, d->m_jclass, "", signature); + jmethodID constructorId = getMethodID(env.jniEnv(), d->m_jclass, "", signature); if (constructorId) { jobject obj = env->NewObjectV(d->m_jclass, constructorId, args); if (obj) { @@ -772,7 +772,7 @@ QJniObject QJniObject::callObjectMethodV(const char *methodName, { QJniEnvironment env; jobject res = nullptr; - jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, signature); + jmethodID id = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, methodName, signature); if (id) { res = env->CallObjectMethodV(d->m_jobject, id, args); if (env.checkAndClearExceptions()) { @@ -793,9 +793,9 @@ QJniObject QJniObject::callStaticObjectMethodV(const char *className, { QJniEnvironment env; jobject res = nullptr; - jclass clazz = loadClass(className, env); + jclass clazz = loadClass(className, env.jniEnv()); if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), + jmethodID id = getCachedMethodID(env.jniEnv(), clazz, toBinaryEncClassName(className), methodName, signature, true); if (id) { res = env->CallStaticObjectMethodV(clazz, id, args); @@ -817,7 +817,7 @@ QJniObject QJniObject::callStaticObjectMethodV(jclass clazz, va_list args) { QJniEnvironment env; - jmethodID id = getMethodID(env, clazz, methodName, signature, true); + jmethodID id = getMethodID(env.jniEnv(), clazz, methodName, signature, true); if (!id) return QJniObject(); @@ -840,7 +840,7 @@ template <> Q_CORE_EXPORT void QJniObject::callMethod(const char *methodName, const char *signature, ...) const { QJniEnvironment env; - jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, signature); + jmethodID id = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, methodName, signature); if (id) { va_list args; va_start(args, signature); @@ -885,9 +885,9 @@ Q_CORE_EXPORT void QJniObject::callStaticMethod(const char *className, ...) { QJniEnvironment env; - jclass clazz = loadClass(className, env); + jclass clazz = loadClass(className, env.jniEnv()); if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), + jmethodID id = getCachedMethodID(env.jniEnv(), clazz, toBinaryEncClassName(className), methodName, signature, true); if (id) { va_list args; @@ -936,7 +936,7 @@ Q_CORE_EXPORT void QJniObject::callStaticMethod(jclass clazz, { QJniEnvironment env; if (clazz) { - jmethodID id = getMethodID(env, clazz, methodName, signature, true); + jmethodID id = getMethodID(env.jniEnv(), clazz, methodName, signature, true); if (id) { va_list args; va_start(args, signature); @@ -954,9 +954,9 @@ Q_CORE_EXPORT void QJniObject::callStaticMethodV(const char *className, va_list args) { QJniEnvironment env; - jclass clazz = loadClass(className, env); + jclass clazz = loadClass(className, env.jniEnv()); if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, + jmethodID id = getCachedMethodID(env.jniEnv(), clazz, toBinaryEncClassName(className), methodName, signature, true); if (id) { @@ -973,7 +973,7 @@ Q_CORE_EXPORT void QJniObject::callStaticMethodV(jclass clazz, va_list args) { QJniEnvironment env; - jmethodID id = getMethodID(env, clazz, methodName, signature, true); + jmethodID id = getMethodID(env.jniEnv(), clazz, methodName, signature, true); if (id) { env->CallStaticVoidMethodV(clazz, id, args); env.checkAndClearExceptions(); @@ -1002,7 +1002,7 @@ Q_CORE_EXPORT void QJniObject::callMethodV(const char *methodName, const c va_list args) const { QJniEnvironment env; - jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, signature); + jmethodID id = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, methodName, signature); if (id) { env->CallVoidMethodV(d->m_jobject, id, args); env.checkAndClearExceptions(); @@ -1015,7 +1015,7 @@ template <> Q_CORE_EXPORT Type QJniObject::callMethod(const char *methodNa { \ QJniEnvironment env; \ Type res = 0; \ - jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, signature); \ + jmethodID id = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, methodName, signature); \ if (id) { \ va_list args; \ va_start(args, signature); \ @@ -1038,9 +1038,9 @@ template <> Q_CORE_EXPORT Type QJniObject::callStaticMethod(const char *cl { \ QJniEnvironment env; \ Type res = 0; \ - jclass clazz = loadClass(className, env); \ + jclass clazz = loadClass(className, env.jniEnv()); \ if (clazz) { \ - jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, \ + jmethodID id = getCachedMethodID(env.jniEnv(), clazz, toBinaryEncClassName(className), methodName, \ signature, true); \ if (id) { \ va_list args; \ @@ -1067,7 +1067,7 @@ template <> Q_CORE_EXPORT Type QJniObject::callStaticMethod(jclass clazz, QJniEnvironment env; \ Type res = 0; \ if (clazz) { \ - jmethodID id = getMethodID(env, clazz, methodName, signature, true); \ + jmethodID id = getMethodID(env.jniEnv(), clazz, methodName, signature, true); \ if (id) { \ va_list args; \ va_start(args, signature); \ @@ -1090,7 +1090,7 @@ Q_CORE_EXPORT Type QJniObject::callMethodV(const char *methodName, const c {\ QJniEnvironment env;\ Type res = 0;\ - jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, signature);\ + jmethodID id = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, methodName, signature);\ if (id) {\ res = env->Call##MethodName##MethodV(d->m_jobject, id, args);\ if (env.checkAndClearExceptions()) \ @@ -1106,9 +1106,9 @@ Q_CORE_EXPORT Type QJniObject::callStaticMethodV(const char *className,\ {\ QJniEnvironment env;\ Type res = 0;\ - jclass clazz = loadClass(className, env);\ + jclass clazz = loadClass(className, env.jniEnv());\ if (clazz) {\ - jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName,\ + jmethodID id = getCachedMethodID(env.jniEnv(), clazz, toBinaryEncClassName(className), methodName,\ signature, true);\ if (id) {\ res = env->CallStatic##MethodName##MethodV(clazz, id, args);\ @@ -1126,7 +1126,7 @@ Q_CORE_EXPORT Type QJniObject::callStaticMethodV(jclass clazz,\ {\ QJniEnvironment env;\ Type res = 0;\ - jmethodID id = getMethodID(env, clazz, methodName, signature, true);\ + jmethodID id = getMethodID(env.jniEnv(), clazz, methodName, signature, true);\ if (id) {\ res = env->CallStatic##MethodName##MethodV(clazz, id, args);\ if (env.checkAndClearExceptions()) \ @@ -1162,7 +1162,7 @@ DECLARE_JNI_METHODS(Double, jdouble, "()D") QJniObject QJniObject::callObjectMethod(const char *methodName, const char *signature, ...) const { QJniEnvironment env; - jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, signature); + jmethodID id = getCachedMethodID(env.jniEnv(), d->m_jclass, d->m_className, methodName, signature); if (id) { va_list args; va_start(args, signature); @@ -1193,9 +1193,9 @@ QJniObject QJniObject::callStaticObjectMethod(const char *className, ...) { QJniEnvironment env; - jclass clazz = loadClass(className, env); + jclass clazz = loadClass(className, env.jniEnv()); if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), + jmethodID id = getCachedMethodID(env.jniEnv(), clazz, toBinaryEncClassName(className), methodName, signature, true); if (id) { va_list args; @@ -1222,7 +1222,7 @@ QJniObject QJniObject::callStaticObjectMethod(jclass clazz, { QJniEnvironment env; if (clazz) { - jmethodID id = getMethodID(env, clazz, methodName, signature, true); + jmethodID id = getMethodID(env.jniEnv(), clazz, methodName, signature, true); if (id) { va_list args; va_start(args, signature); @@ -1349,12 +1349,12 @@ Q_CORE_EXPORT void QJniObject::setStaticField(const char *className, jobject value) { QJniEnvironment env; - jclass clazz = loadClass(className, env); + jclass clazz = loadClass(className, env.jniEnv()); if (!clazz) return; - jfieldID id = getCachedFieldID(env, clazz, className, fieldName, signature, true); + jfieldID id = getCachedFieldID(env.jniEnv(), clazz, className, fieldName, signature, true); if (id) { env->SetStaticObjectField(clazz, id, value); env.checkAndClearExceptions(); @@ -1373,7 +1373,7 @@ template <> Q_CORE_EXPORT void QJniObject::setStaticField(jclass clazz, jobject value) { QJniEnvironment env; - jfieldID id = getFieldID(env, clazz, fieldName, signature, true); + jfieldID id = getFieldID(env.jniEnv(), clazz, fieldName, signature, true); if (id) { env->SetStaticObjectField(clazz, id, value); @@ -1420,7 +1420,7 @@ template <> Q_CORE_EXPORT Type QJniObject::getField(const char *fieldName) { \ QJniEnvironment env; \ Type res = 0; \ - jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, Signature); \ + jfieldID id = getCachedFieldID(env.jniEnv(), d->m_jclass, d->m_className, fieldName, Signature); \ if (id) {\ res = env->Get##FieldName##Field(d->m_jobject, id); \ if (env.checkAndClearExceptions()) \ @@ -1432,10 +1432,10 @@ template <> \ Q_CORE_EXPORT Type QJniObject::getStaticField(const char *className, const char *fieldName) \ { \ QJniEnvironment env; \ - jclass clazz = loadClass(className, env); \ + jclass clazz = loadClass(className, env.jniEnv()); \ if (!clazz) \ return 0; \ - jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, \ + jfieldID id = getCachedFieldID(env.jniEnv(), clazz, toBinaryEncClassName(className), fieldName, \ Signature, true); \ if (!id) \ return 0; \ @@ -1449,7 +1449,7 @@ Q_CORE_EXPORT Type QJniObject::getStaticField(jclass clazz, const char *fi {\ QJniEnvironment env;\ Type res = 0;\ - jfieldID id = getFieldID(env, clazz, fieldName, Signature, true);\ + jfieldID id = getFieldID(env.jniEnv(), clazz, fieldName, Signature, true);\ if (id) {\ res = env->GetStatic##FieldName##Field(clazz, id);\ if (env.checkAndClearExceptions()) \ @@ -1462,10 +1462,10 @@ template <> Q_CORE_EXPORT void QJniObject::setStaticField(const char *clas Type value) \ { \ QJniEnvironment env; \ - jclass clazz = loadClass(className, env); \ + jclass clazz = loadClass(className, env.jniEnv()); \ if (!clazz) \ return; \ - jfieldID id = getCachedFieldID(env, clazz, className, fieldName, Signature, true); \ + jfieldID id = getCachedFieldID(env.jniEnv(), clazz, className, fieldName, Signature, true); \ if (!id) \ return; \ env->SetStatic##FieldName##Field(clazz, id, value); \ @@ -1476,7 +1476,7 @@ template <> Q_CORE_EXPORT void QJniObject::setStaticField(jclass clazz,\ Type value)\ {\ QJniEnvironment env;\ - jfieldID id = getFieldID(env, clazz, fieldName, Signature, true);\ + jfieldID id = getFieldID(env.jniEnv(), clazz, fieldName, Signature, true);\ if (id) {\ env->SetStatic##FieldName##Field(clazz, id, value);\ env.checkAndClearExceptions();\ @@ -1485,7 +1485,7 @@ template <> Q_CORE_EXPORT void QJniObject::setStaticField(jclass clazz,\ template <> Q_CORE_EXPORT void QJniObject::setField(const char *fieldName, Type value) \ { \ QJniEnvironment env; \ - jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, Signature); \ + jfieldID id = getCachedFieldID(env.jniEnv(), d->m_jclass, d->m_className, fieldName, Signature); \ if (id) { \ env->Set##FieldName##Field(d->m_jobject, id, value); \ env.checkAndClearExceptions(); \ @@ -1521,10 +1521,10 @@ QJniObject QJniObject::getStaticObjectField(const char *className, const char *signature) { QJniEnvironment env; - jclass clazz = loadClass(className, env); + jclass clazz = loadClass(className, env.jniEnv()); if (!clazz) return QJniObject(); - jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, + jfieldID id = getCachedFieldID(env.jniEnv(), clazz, toBinaryEncClassName(className), fieldName, signature, true); if (!id) return QJniObject(); @@ -1549,7 +1549,7 @@ QJniObject QJniObject::getStaticObjectField(jclass clazz, const char *signature) { QJniEnvironment env; - jfieldID id = getFieldID(env, clazz, fieldName, signature, true); + jfieldID id = getFieldID(env.jniEnv(), clazz, fieldName, signature, true); if (!id) return QJniObject(); @@ -1628,7 +1628,7 @@ template <> Q_CORE_EXPORT void QJniObject::setField(const char *fieldName, const char *signature, jobject value) { QJniEnvironment env; - jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, signature); + jfieldID id = getCachedFieldID(env.jniEnv(), d->m_jclass, d->m_className, fieldName, signature); if (id) { env->SetObjectField(d->m_jobject, id, value); env.checkAndClearExceptions(); @@ -1641,7 +1641,7 @@ void QJniObject::setField(const char *fieldName, jobjectArray value) { QJniEnvironment env; - jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, signature); + jfieldID id = getCachedFieldID(env.jniEnv(), d->m_jclass, d->m_className, fieldName, signature); if (id) { env->SetObjectField(d->m_jobject, id, value); env.checkAndClearExceptions(); @@ -1672,7 +1672,7 @@ void QJniObject::setField(const char *fieldName, QJniObject QJniObject::getObjectField(const char *fieldName, const char *signature) const { QJniEnvironment env; - jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, signature); + jfieldID id = getCachedFieldID(env.jniEnv(), d->m_jclass, d->m_className, fieldName, signature); if (!id) return QJniObject(); @@ -1815,10 +1815,10 @@ bool QJniObject::isClassAvailable(const char *className) { QJniEnvironment env; - if (!env) + if (!env.jniEnv()) return false; - return loadClass(className, env);; + return loadClass(className, env.jniEnv());; } /*! diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index ab31617900..7b1182066d 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -320,7 +320,7 @@ namespace QtAndroid int createSurface(AndroidSurfaceClient *client, const QRect &geometry, bool onTop, int imageDepth) { QJniEnvironment env; - if (!env) + if (!env.jniEnv()) return -1; m_surfacesMutex.lock(); @@ -383,7 +383,7 @@ namespace QtAndroid return; QJniEnvironment env; - if (!env) + if (!env.jniEnv()) return; jint x = 0, y = 0, w = -1, h = -1; if (!geometry.isNull()) { @@ -412,7 +412,7 @@ namespace QtAndroid } QJniEnvironment env; - if (env) + if (env.jniEnv()) env->CallStaticVoidMethod(m_applicationClass, m_destroySurfaceMethodID, surfaceId); diff --git a/src/plugins/platforms/android/qandroidplatformmenu.cpp b/src/plugins/platforms/android/qandroidplatformmenu.cpp index 1ac836faf2..8d79331f03 100644 --- a/src/plugins/platforms/android/qandroidplatformmenu.cpp +++ b/src/plugins/platforms/android/qandroidplatformmenu.cpp @@ -155,7 +155,7 @@ void QAndroidPlatformMenu::showPopup(const QWindow *parentWindow, const QRect &t Q_UNUSED(parentWindow); Q_UNUSED(item); setVisible(true); - QtAndroidMenu::showContextMenu(this, targetRect, QJniEnvironment()); + QtAndroidMenu::showContextMenu(this, targetRect, QJniEnvironment().jniEnv()); } QPlatformMenuItem *QAndroidPlatformMenu::menuItemForTag(quintptr tag) const diff --git a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp index f69e9e389f..2020f02456 100644 --- a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp @@ -176,7 +176,7 @@ void QAndroidPlatformOpenGLWindow::createEgl(EGLConfig config) { clearEgl(); QJniEnvironment env; - m_nativeWindow = ANativeWindow_fromSurface(env, m_androidSurfaceObject.object()); + m_nativeWindow = ANativeWindow_fromSurface(env.jniEnv(), m_androidSurfaceObject.object()); m_androidSurfaceObject = QJniObject(); m_eglSurface = eglCreateWindowSurface(m_eglDisplay, config, m_nativeWindow, NULL); m_format = q_glFormatFromConfig(m_eglDisplay, config, window()->requestedFormat()); diff --git a/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp b/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp index 2cd0b7ea76..278554e496 100644 --- a/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp +++ b/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp @@ -26,6 +26,8 @@ ** ****************************************************************************/ +#include + #include #include #include @@ -56,7 +58,7 @@ void tst_QJniEnvironment::jniEnv() JNIEnv *jni = 0; QCOMPARE(javaVM->GetEnv((void**)&jni, JNI_VERSION_1_6), JNI_OK); - JNIEnv *e = env; + JNIEnv *e = env.jniEnv(); QVERIFY(e); QCOMPARE(env->GetVersion(), JNI_VERSION_1_6); @@ -71,11 +73,11 @@ void tst_QJniEnvironment::jniEnv() env->ExceptionClear(); QVERIFY(env->FindClass("java/lang/Object")); - QVERIFY(!QJniEnvironment::checkAndClearExceptions(env)); + QVERIFY(!QJniEnvironment::checkAndClearExceptions(env.jniEnv())); // try to find a nonexistent class QVERIFY(!env->FindClass("this/doesnt/Exist")); - QVERIFY(QJniEnvironment::checkAndClearExceptions(env)); + QVERIFY(QJniEnvironment::checkAndClearExceptions(env.jniEnv())); // try to find an existing class with QJniEnvironment QJniEnvironment env; @@ -110,6 +112,7 @@ void tst_QJniEnvironment::javaVM() static void callbackFromJava(JNIEnv *env, jobject /*thiz*/, jstring value) { + Q_UNUSED(env) registerNativesString = QJniObject(value).toString(); } -- cgit v1.2.3