From 016cc947c831adeadbb5222d28340ff259e65d24 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Tue, 6 Dec 2016 15:12:03 -0800 Subject: [PATCH] Unblock FlutterView.getBitmap if there is no available layer tree (flutter/engine#3294) --- .../shell/platform/android/platform_view_android.cc | 8 +++----- .../shell/platform/android/platform_view_android.h | 3 +-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/engine/src/flutter/shell/platform/android/platform_view_android.cc b/engine/src/flutter/shell/platform/android/platform_view_android.cc index 3e5c91c0f69..42403c1f0b5 100644 --- a/engine/src/flutter/shell/platform/android/platform_view_android.cc +++ b/engine/src/flutter/shell/platform/android/platform_view_android.cc @@ -430,7 +430,8 @@ base::android::ScopedJavaLocalRef PlatformViewAndroid::GetBitmap( jobject pixels_ref = nullptr; SkISize frame_size; blink::Threads::Gpu()->PostTask([this, &latch, &pixels_ref, &frame_size]() { - GetBitmapGpuTask(&latch, &pixels_ref, &frame_size); + GetBitmapGpuTask(&pixels_ref, &frame_size); + latch.Signal(); }); latch.Wait(); @@ -471,8 +472,7 @@ base::android::ScopedJavaLocalRef PlatformViewAndroid::GetBitmap( return base::android::ScopedJavaLocalRef(env, bitmap); } -void PlatformViewAndroid::GetBitmapGpuTask(ftl::AutoResetWaitableEvent* latch, - jobject* pixels_out, +void PlatformViewAndroid::GetBitmapGpuTask(jobject* pixels_out, SkISize* size_out) { flow::LayerTree* layer_tree = rasterizer_->GetLastLayerTree(); if (layer_tree == nullptr) @@ -519,8 +519,6 @@ void PlatformViewAndroid::GetBitmapGpuTask(ftl::AutoResetWaitableEvent* latch, *size_out = frame_size; base::android::DetachFromVM(); - - latch->Signal(); } jstring GetObservatoryUri(JNIEnv* env, jclass clazz) { diff --git a/engine/src/flutter/shell/platform/android/platform_view_android.h b/engine/src/flutter/shell/platform/android/platform_view_android.h index d72703268b6..e7aa202d801 100644 --- a/engine/src/flutter/shell/platform/android/platform_view_android.h +++ b/engine/src/flutter/shell/platform/android/platform_view_android.h @@ -114,8 +114,7 @@ class PlatformViewAndroid : public PlatformView { void ReleaseSurface(); - void GetBitmapGpuTask(ftl::AutoResetWaitableEvent* latch, - jobject* pixels_out, + void GetBitmapGpuTask(jobject* pixels_out, SkISize* size_out); FTL_DISALLOW_COPY_AND_ASSIGN(PlatformViewAndroid);