| Index: ui/platform_window/android/platform_window_android.cc
|
| diff --git a/ui/platform_window/android/platform_window_android.cc b/ui/platform_window/android/platform_window_android.cc
|
| index a4618aa8b3f97aabb2238f62e4e27cf17f817c6b..d722558244f64668725ec4fb21bece3eabc48f8b 100644
|
| --- a/ui/platform_window/android/platform_window_android.cc
|
| +++ b/ui/platform_window/android/platform_window_android.cc
|
| @@ -9,6 +9,9 @@
|
|
|
| #include "base/android/context_utils.h"
|
| #include "base/android/jni_android.h"
|
| +#include "base/bind.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| +#include "gpu/ipc/common/gpu_surface_tracker.h"
|
| #include "jni/PlatformWindowAndroid_jni.h"
|
| #include "ui/events/event.h"
|
| #include "ui/events/keycodes/keyboard_code_conversion_android.h"
|
| @@ -90,7 +93,17 @@ void PlatformWindowAndroid::SurfaceCreated(
|
| base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env);
|
| window_ = ANativeWindow_fromSurface(env, jsurface);
|
| }
|
| - delegate_->OnAcceleratedWidgetAvailable(window_, device_pixel_ratio);
|
| +
|
| + gpu::SurfaceHandle surface_handle =
|
| + gpu::GpuSurfaceTracker::GetInstance()->AddSurfaceForNativeWidget(window_);
|
| +
|
| + // Post the notification to the delegate to ensure pending initializations
|
| + // for the surface have a chance to run.
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&PlatformWindowAndroid::NotifyDelegateSurfaceCreated,
|
| + weak_factory_.GetWeakPtr(), surface_handle,
|
| + device_pixel_ratio));
|
| }
|
|
|
| void PlatformWindowAndroid::SurfaceDestroyed(JNIEnv* env,
|
| @@ -156,18 +169,26 @@ void PlatformWindowAndroid::ReleaseWindow() {
|
| window_ = NULL;
|
| }
|
|
|
| +void PlatformWindowAndroid::NotifyDelegateSurfaceCreated(
|
| + gpu::SurfaceHandle surface_handle,
|
| + float device_pixel_ratio) {
|
| + delegate_->OnAcceleratedWidgetAvailable(surface_handle, device_pixel_ratio);
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // PlatformWindowAndroid, PlatformWindow implementation:
|
|
|
| void PlatformWindowAndroid::Show() {
|
| if (!java_platform_window_android_.is_empty())
|
| return;
|
| +
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| java_platform_window_android_ = JavaObjectWeakGlobalRef(
|
| - env, Java_PlatformWindowAndroid_createForActivity(
|
| - env, base::android::GetApplicationContext(),
|
| + env, Java_PlatformWindowAndroid_createForCurrentActivity(
|
| + env,
|
| reinterpret_cast<jlong>(this),
|
| - reinterpret_cast<jlong>(&platform_ime_controller_)).obj());
|
| + reinterpret_cast<jlong>(&platform_ime_controller_))
|
| + .obj());
|
| }
|
|
|
| void PlatformWindowAndroid::Hide() {
|
|
|