summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Dippold <michael.dippold@us.thalesgroup.com>2017-08-29 20:41:26 -0700
committerMichael Dippold <michael.dippold@us.thalesgroup.com>2017-09-01 15:03:32 +0000
commit42590b0679e9662960db06565a763780f7bf14f0 (patch)
treeee87baa5bdf6d60ccd5ac5f72ecf4d09b5a1b78d
parentd4464d251f51acf54d1a7e9570b72c1c7d46f8c9 (diff)
Android: use QJNIObjectPrivate for strings
Makes sure local references are deleted as previous implementation led to local reference table overflows. Change-Id: I57a72f1935f3a373e9acd606df93e360e3786f05 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
-rw-r--r--src/plugins/tts/android/src/qtexttospeech_android.cpp15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/plugins/tts/android/src/qtexttospeech_android.cpp b/src/plugins/tts/android/src/qtexttospeech_android.cpp
index 0c723dc..a3cac58 100644
--- a/src/plugins/tts/android/src/qtexttospeech_android.cpp
+++ b/src/plugins/tts/android/src/qtexttospeech_android.cpp
@@ -153,10 +153,7 @@ void QTextToSpeechEngineAndroid::say(const QString &text)
stop();
m_text = text;
- QJNIEnvironmentPrivate env;
- jstring jstr = env->NewString(reinterpret_cast<const jchar*>(text.constData()),
- text.length());
- m_speech.callMethod<void>("say", "(Ljava/lang/String;)V", jstr);
+ m_speech.callMethod<void>("say", "(Ljava/lang/String;)V", QJNIObjectPrivate::fromString(m_text).object());
}
QTextToSpeech::State QTextToSpeechEngineAndroid::state() const
@@ -266,13 +263,9 @@ bool QTextToSpeechEngineAndroid::setLocale(const QLocale &locale)
QString languageCode = parts.at(0);
QString countryCode = parts.at(1);
- QJNIEnvironmentPrivate env;
- jstring jLanguageCode = env->NewString(reinterpret_cast<const jchar*>(languageCode.constData()),
- languageCode.length());
- jstring jCountryCode = env->NewString(reinterpret_cast<const jchar*>(countryCode.constData()),
- countryCode.length());
-
- QJNIObjectPrivate jLocale("java/util/Locale", "(Ljava/lang/String;Ljava/lang/String;)V", jLanguageCode, jCountryCode);
+ QJNIObjectPrivate jLocale("java/util/Locale", "(Ljava/lang/String;Ljava/lang/String;)V",
+ QJNIObjectPrivate::fromString(languageCode).object(),
+ QJNIObjectPrivate::fromString(countryCode).object());
return m_speech.callMethod<jboolean>("setLocale", "(Ljava/util/Locale;)Z", jLocale.object());
}