Index: android_webview/browser/render_thread_manager.cc |
diff --git a/android_webview/browser/render_thread_manager.cc b/android_webview/browser/render_thread_manager.cc |
index 08e115fee88c953172eb0aa6115065372ee06043..1413381ff6ac60efbfd3dfa72c2f14ccaed007fd 100644 |
--- a/android_webview/browser/render_thread_manager.cc |
+++ b/android_webview/browser/render_thread_manager.cc |
@@ -193,6 +193,8 @@ void RenderThreadManager::SetFrameOnUI( |
std::unique_ptr<ChildFrame> RenderThreadManager::GetSynchronousCompositorFrame( |
scoped_refptr<content::SynchronousCompositor::FrameFuture> frame_future, |
std::unique_ptr<ChildFrame> child_frame) { |
+ if (!frame_future) |
+ return nullptr; |
DCHECK(!child_frame->frame.get()); |
std::unique_ptr<content::SynchronousCompositor::Frame> frame = |
frame_future->getFrame(); |
@@ -210,13 +212,15 @@ std::unique_ptr<ChildFrame> RenderThreadManager::PassFrameOnRT() { |
base::AutoLock lock(lock_); |
hardware_renderer_has_frame_ = |
hardware_renderer_has_frame_ || child_frame_.get(); |
- if (async_on_draw_hardware_ && child_frame_.get()) { |
- return GetSynchronousCompositorFrame(std::move(frame_future_), |
- std::move(child_frame_)); |
- } |
return std::move(child_frame_); |
} |
+scoped_refptr<content::SynchronousCompositor::FrameFuture> |
+RenderThreadManager::PassFrameFutureOnRT() { |
+ base::AutoLock lock(lock_); |
+ return std::move(frame_future_); |
+} |
+ |
std::unique_ptr<ChildFrame> RenderThreadManager::PassUncommittedFrameOnUI() { |
base::AutoLock lock(lock_); |
if (async_on_draw_hardware_ && child_frame_.get()) { |