From 3042d1be4a62c2ec757871e8aa4a66deab1a4c86 Mon Sep 17 00:00:00 2001 From: "kristianm@chromium.org" Date: Tue, 2 Jul 2013 18:54:05 +0000 Subject: Updating message pump to store java ptr in class This enables us to have more than one MessagePumpForUI on Android, and gets rid of an unneeded global variable. BUG= Review URL: https://chromiumcodereview.appspot.com/16926003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209739 0039d316-1c4b-4281-b951-d872f2087c98 --- base/message_loop/message_pump_android.cc | 25 +++++++++---------------- base/message_loop/message_pump_android.h | 2 ++ 2 files changed, 11 insertions(+), 16 deletions(-) (limited to 'base') diff --git a/base/message_loop/message_pump_android.cc b/base/message_loop/message_pump_android.cc index dda8730..70eb6ef 100644 --- a/base/message_loop/message_pump_android.cc +++ b/base/message_loop/message_pump_android.cc @@ -16,13 +16,6 @@ using base::android::ScopedJavaLocalRef; -namespace { - -base::LazyInstance > - g_system_message_handler_obj = LAZY_INSTANCE_INITIALIZER; - -} // namespace - // ---------------------------------------------------------------------------- // Native JNI methods called by Java. // ---------------------------------------------------------------------------- @@ -81,23 +74,23 @@ void MessagePumpForUI::Start(Delegate* delegate) { if (!run_loop_->BeforeRun()) NOTREACHED(); - DCHECK(g_system_message_handler_obj.Get().is_null()); + DCHECK(system_message_handler_obj_.is_null()); JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); - g_system_message_handler_obj.Get().Reset( + system_message_handler_obj_.Reset( Java_SystemMessageHandler_create(env, reinterpret_cast(delegate))); } void MessagePumpForUI::Quit() { - if (!g_system_message_handler_obj.Get().is_null()) { + if (!system_message_handler_obj_.is_null()) { JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); Java_SystemMessageHandler_removeTimer(env, - g_system_message_handler_obj.Get().obj()); - g_system_message_handler_obj.Get().Reset(); + system_message_handler_obj_.obj()); + system_message_handler_obj_.Reset(); } if (run_loop_) { @@ -108,17 +101,17 @@ void MessagePumpForUI::Quit() { } void MessagePumpForUI::ScheduleWork() { - DCHECK(!g_system_message_handler_obj.Get().is_null()); + DCHECK(!system_message_handler_obj_.is_null()); JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); Java_SystemMessageHandler_setTimer(env, - g_system_message_handler_obj.Get().obj()); + system_message_handler_obj_.obj()); } void MessagePumpForUI::ScheduleDelayedWork(const TimeTicks& delayed_work_time) { - DCHECK(!g_system_message_handler_obj.Get().is_null()); + DCHECK(!system_message_handler_obj_.is_null()); JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); @@ -128,7 +121,7 @@ void MessagePumpForUI::ScheduleDelayedWork(const TimeTicks& delayed_work_time) { // Note that we're truncating to milliseconds as required by the java side, // even though delayed_work_time is microseconds resolution. Java_SystemMessageHandler_setDelayedTimer(env, - g_system_message_handler_obj.Get().obj(), millis); + system_message_handler_obj_.obj(), millis); } // static diff --git a/base/message_loop/message_pump_android.h b/base/message_loop/message_pump_android.h index fd934a7..f3a8ded 100644 --- a/base/message_loop/message_pump_android.h +++ b/base/message_loop/message_pump_android.h @@ -7,6 +7,7 @@ #include +#include "base/android/scoped_java_ref.h" #include "base/base_export.h" #include "base/compiler_specific.h" #include "base/message_loop/message_pump.h" @@ -36,6 +37,7 @@ class BASE_EXPORT MessagePumpForUI : public MessagePump { private: RunLoop* run_loop_; + base::android::ScopedJavaGlobalRef system_message_handler_obj_; DISALLOW_COPY_AND_ASSIGN(MessagePumpForUI); }; -- cgit v1.1