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 d61000b735e53f350cf1506e7b906a303edc8b79..2902d23a482a8875b7506ee91894d3fad6cefe6c 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -392,6 +392,7 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
frame_evictor_(new DelegatedFrameEvictor(this)), |
locks_on_frame_count_(0), |
observing_root_window_(false), |
+ should_unlock_surface_on_visibility_lost_or_activity_resumed_(false), |
weak_ptr_factory_(this) { |
host_->SetView(this); |
SetContentViewCore(content_view_core); |
@@ -708,6 +709,7 @@ void RenderWidgetHostViewAndroid::OnShowUnhandledTapUIIfNeeded(int x_dip, |
} |
void RenderWidgetHostViewAndroid::ReleaseLocksOnSurface() { |
+ should_unlock_surface_on_visibility_lost_or_activity_resumed_ = false; |
if (!frame_evictor_->HasFrame()) { |
DCHECK_EQ(locks_on_frame_count_, 0u); |
return; |
@@ -1881,6 +1883,17 @@ void RenderWidgetHostViewAndroid::OnDetachCompositor() { |
overscroll_controller_.reset(); |
} |
+void RenderWidgetHostViewAndroid::OnVisibilityChanged(bool visible) { |
+ if (visible) |
jdduke (slow)
2015/03/16 16:54:12
We never see this callback, as we stop observing t
no sievers
2015/03/17 21:37:47
Maybe that's ok. If somebody called Hide() we alre
|
+ return; |
+ |
+ if (should_unlock_surface_on_visibility_lost_or_activity_resumed_) { |
no sievers
2015/03/17 21:37:47
nit: maybe |surface_locked_for_paused_activity_| o
|
+ should_unlock_surface_on_visibility_lost_or_activity_resumed_ = false; |
+ DCHECK_GT(locks_on_frame_count_, 0U); |
+ UnlockCompositingSurface(); |
+ } |
+} |
+ |
void RenderWidgetHostViewAndroid::OnVSync(base::TimeTicks frame_time, |
base::TimeDelta vsync_period) { |
TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnVSync"); |
@@ -1907,6 +1920,22 @@ void RenderWidgetHostViewAndroid::OnAnimate(base::TimeTicks begin_frame_time) { |
SetNeedsAnimate(); |
} |
+void RenderWidgetHostViewAndroid::OnActivityResumed() { |
+ if (should_unlock_surface_on_visibility_lost_or_activity_resumed_) { |
+ should_unlock_surface_on_visibility_lost_or_activity_resumed_ = false; |
+ DCHECK_GT(locks_on_frame_count_, 0U); |
+ UnlockCompositingSurface(); |
+ } |
+} |
+ |
+void RenderWidgetHostViewAndroid::OnActivityPaused() { |
+ if (IsShowing()) { |
+ DCHECK(!should_unlock_surface_on_visibility_lost_or_activity_resumed_); |
+ should_unlock_surface_on_visibility_lost_or_activity_resumed_ = true; |
+ LockCompositingSurface(); |
+ } |
+} |
+ |
void RenderWidgetHostViewAndroid::OnLostResources() { |
ReleaseLocksOnSurface(); |
if (layer_.get()) |