| Index: mojo/shell/android/mojo_main.cc
|
| diff --git a/mojo/shell/android/mojo_main.cc b/mojo/shell/android/mojo_main.cc
|
| index 9a574b80080914b7f94d63c61b661b3433cb95c0..4848ad9483cb9d410f226086a41d6caf4b20d954 100644
|
| --- a/mojo/shell/android/mojo_main.cc
|
| +++ b/mojo/shell/android/mojo_main.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "mojo/shell/android/mojo_main.h"
|
|
|
| +#include "base/android/java_handler_thread.h"
|
| #include "base/android/jni_string.h"
|
| #include "base/at_exit.h"
|
| #include "base/bind.h"
|
| @@ -32,6 +33,18 @@ LazyInstance<scoped_ptr<base::MessageLoop> > g_java_message_loop =
|
| LazyInstance<scoped_ptr<shell::Context> > g_context =
|
| LAZY_INSTANCE_INITIALIZER;
|
|
|
| +LazyInstance<scoped_ptr<base::android::JavaHandlerThread> > g_shell_thread =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +void RunShell(std::vector<GURL> app_urls) {
|
| + shell::Context* shell_context = new shell::Context();
|
| + shell_context->set_activity(base::android::GetApplicationContext());
|
| + shell_context->set_ui_loop(g_java_message_loop.Get().get());
|
| +
|
| + g_context.Get().reset(shell_context);
|
| + shell::Run(shell_context, app_urls);
|
| +}
|
| +
|
| } // namespace
|
|
|
| static void Init(JNIEnv* env, jclass clazz, jobject context) {
|
| @@ -51,7 +64,7 @@ static void Init(JNIEnv* env, jclass clazz, jobject context) {
|
| gfx::GLSurface::InitializeOneOff();
|
| }
|
|
|
| -static void Start(JNIEnv* env, jclass clazz, jobject context, jstring jurl) {
|
| +static void Start(JNIEnv* env, jclass clazz, jstring jurl) {
|
| std::vector<GURL> app_urls;
|
| #if defined(MOJO_SHELL_DEBUG_URL)
|
| app_urls.push_back(GURL(MOJO_SHELL_DEBUG_URL));
|
| @@ -62,14 +75,11 @@ static void Start(JNIEnv* env, jclass clazz, jobject context, jstring jurl) {
|
| app_urls.push_back(GURL(base::android::ConvertJavaStringToUTF8(env, jurl)));
|
| #endif
|
|
|
| - base::android::ScopedJavaGlobalRef<jobject> activity;
|
| - activity.Reset(env, context);
|
| -
|
| - shell::Context* shell_context = new shell::Context();
|
| - shell_context->set_activity(activity.obj());
|
| -
|
| - g_context.Get().reset(shell_context);
|
| - shell::Run(shell_context, app_urls);
|
| + g_shell_thread.Get().reset(
|
| + new base::android::JavaHandlerThread("shell_thread"));
|
| + g_shell_thread.Get()->Start();
|
| + g_shell_thread.Get()->message_loop()->PostTask(
|
| + FROM_HERE, base::Bind(&RunShell, app_urls));
|
| }
|
|
|
| bool RegisterMojoMain(JNIEnv* env) {
|
|
|