diff options
author | Michael Dippold <michael.dippold@us.thalesgroup.com> | 2017-08-29 20:41:26 -0700 |
---|---|---|
committer | Michael Dippold <michael.dippold@us.thalesgroup.com> | 2017-09-01 15:03:32 +0000 |
commit | 42590b0679e9662960db06565a763780f7bf14f0 (patch) | |
tree | ee87baa5bdf6d60ccd5ac5f72ecf4d09b5a1b78d | |
parent | d4464d251f51acf54d1a7e9570b72c1c7d46f8c9 (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.cpp | 15 |
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()); } |