| Index: base/android/java_handler_thread.cc
|
| diff --git a/base/android/java_handler_thread.cc b/base/android/java_handler_thread.cc
|
| index 18e1440ee5cdfc33429ae5515be88164d55de3ec..117971eda5d0674468e96325d8da9286c9f20088 100644
|
| --- a/base/android/java_handler_thread.cc
|
| +++ b/base/android/java_handler_thread.cc
|
| @@ -44,6 +44,15 @@ void JavaHandlerThread::Start() {
|
| }
|
|
|
| void JavaHandlerThread::Stop() {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + base::WaitableEvent shutdown_event(false, false);
|
| + Java_JavaHandlerThread_stop(env,
|
| + java_thread_.obj(),
|
| + reinterpret_cast<intptr_t>(this),
|
| + reinterpret_cast<intptr_t>(&shutdown_event));
|
| + // Wait for thread to shut down before returning.
|
| + base::ThreadRestrictions::ScopedAllowWait wait_allowed;
|
| + shutdown_event.Wait();
|
| }
|
|
|
| void JavaHandlerThread::InitializeThread(JNIEnv* env, jobject obj,
|
| @@ -54,6 +63,11 @@ void JavaHandlerThread::InitializeThread(JNIEnv* env, jobject obj,
|
| reinterpret_cast<base::WaitableEvent*>(event)->Signal();
|
| }
|
|
|
| +void JavaHandlerThread::StopThread(JNIEnv* env, jobject obj, jlong event) {
|
| + static_cast<MessageLoopForUI*>(message_loop_.get())->Quit();
|
| + reinterpret_cast<base::WaitableEvent*>(event)->Signal();
|
| +}
|
| +
|
| // static
|
| bool JavaHandlerThread::RegisterBindings(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
|
|