From c380bce6b1b4cdc5d51d169858f6ddfa40de8cac Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Mon, 19 Dec 2011 18:22:47 +0300 Subject: [PATCH] [android] Fixed crash when canceling country download --- .../com/mapswithme/platform/HttpThread.cpp | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/android/jni/com/mapswithme/platform/HttpThread.cpp b/android/jni/com/mapswithme/platform/HttpThread.cpp index 8e7711134c..0fd9b8656a 100644 --- a/android/jni/com/mapswithme/platform/HttpThread.cpp +++ b/android/jni/com/mapswithme/platform/HttpThread.cpp @@ -1,7 +1,6 @@ #include "../../../../../platform/http_thread_callback.hpp" #include "../maps/DownloadUI.hpp" -#include "../jni/jni_thread.hpp" class HttpThread { @@ -19,26 +18,31 @@ public: /// should create java object here. JNIEnv * env = jni::GetCurrentThreadJNIEnv(); - jclass k = env->FindClass("com/mapswithme/maps/downloader/DownloadChunkTask"); - ASSERT(k, ("Can't find java class com/mapswithme/maps/downloader/DownloadChunkTask")); + jclass klass = env->FindClass("com/mapswithme/maps/downloader/DownloadChunkTask"); + ASSERT(klass, ("Can't find java class com/mapswithme/maps/downloader/DownloadChunkTask")); - jni::Method ctor(k, "", "(JLjava/lang/String;JJJLjava/lang/String;)V"); + jmethodID methodId = env->GetMethodID(klass, "", "(JLjava/lang/String;JJJLjava/lang/String;)V"); + ASSERT(methodId, ("Can't find java constructor in com/mapswithme/maps/downloader/DownloadChunkTask")); - m_self = env->NewObject(k, ctor.GetMethodID(), reinterpret_cast(&cb), + m_self = env->NewObject(klass, methodId, reinterpret_cast(&cb), env->NewStringUTF(url.c_str()), beg, end, expectedFileSize, env->NewStringUTF(pb.c_str())); - jni::Method startFn(k, "start", "()V"); + methodId = env->GetMethodID(klass, "start", "()V"); + ASSERT(methodId, ("Can't find java method 'start' in com/mapswithme/maps/downloader/DownloadChunkTask")); - startFn.CallVoid(m_self); + env->CallVoidMethod(m_self, methodId); } ~HttpThread() { - jclass k = jni::GetCurrentThreadJNIEnv()->FindClass("com/mapswithme/maps/downloader/DownloadChunkTask"); - ASSERT(k, ("Can't find java class com/mapswithme/maps/downloader/DownloadChunkTask")); + JNIEnv * env = jni::GetCurrentThreadJNIEnv(); + jclass klass = env->FindClass("com/mapswithme/maps/downloader/DownloadChunkTask"); + ASSERT(klass, ("Can't find java class com/mapswithme/maps/downloader/DownloadChunkTask")); - jni::Method cancelFn(k, "cancel", "(Z)Z"); - cancelFn.CallVoid(m_self, false); + jmethodID methodId = env->GetMethodID(klass, "cancel", "(Z)Z"); + ASSERT(methodId, ("Can't find java method 'cancel' in com/mapswithme/maps/downloader/DownloadChunkTask")); + + env->CallBooleanMethod(m_self, methodId, false); } };