Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1287)

Unified Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 170783014: android: Expose content locks in RenderWidgetHostViewAndroid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_android.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 44d060a63ead8d96cda20647e83152460a04d979..36c4e2a5251f916d6aad2d449cbbee43c2bce151 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -144,6 +144,7 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
widget_host->GetProcess()->GetID(),
widget_host->GetRoutingID()) != NULL),
frame_evictor_(new DelegatedFrameEvictor(this)),
+ frame_locked_(false),
using_delegated_renderer_(CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableDelegatedRenderer) &&
!CommandLine::ForCurrentProcess()->HasSwitch(
@@ -411,11 +412,15 @@ void RenderWidgetHostViewAndroid::LockResources() {
DCHECK(HasValidFrame());
DCHECK(host_);
DCHECK(!host_->is_hidden());
+ DCHECK(!frame_locked_);
frame_evictor_->LockFrame();
+ frame_locked_ = true;
}
void RenderWidgetHostViewAndroid::UnlockResources() {
DCHECK(HasValidFrame());
+ DCHECK(frame_locked_);
+ frame_locked_ = false;
frame_evictor_->UnlockFrame();
}
@@ -849,6 +854,18 @@ void RenderWidgetHostViewAndroid::OnSwapCompositorFrame(
DCHECK(frame->delegated_frame_data);
DCHECK(!frame->delegated_frame_data->render_pass_list.empty());
+ if (frame_locked_) {
+ base::Closure ack_callback =
+ base::Bind(&RenderWidgetHostViewAndroid::SendDelegatedFrameAck,
+ weak_ptr_factory_.GetWeakPtr(),
+ output_surface_id);
+
+ if (host_->is_hidden())
+ ack_callback.Run();
+ else
+ ack_callbacks_.push(ack_callback);
+ return;
+ }
cc::RenderPass* root_pass =
frame->delegated_frame_data->render_pass_list.back();
@@ -1381,6 +1398,8 @@ void RenderWidgetHostViewAndroid::OnDetachCompositor() {
}
void RenderWidgetHostViewAndroid::OnLostResources() {
+ if (frame_locked_)
+ UnlockResources();
if (texture_layer_.get())
texture_layer_->SetIsDrawable(false);
if (delegated_renderer_layer_.get())

Powered by Google App Engine
This is Rietveld 408576698