Index: content/browser/renderer_host/render_widget_host_impl.h |
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h |
index 3cefbd833b01826378c28061884c958205b22eaf..b82f30b950fde41e504b124d8c8f22c73739eac3 100644 |
--- a/content/browser/renderer_host/render_widget_host_impl.h |
+++ b/content/browser/renderer_host/render_widget_host_impl.h |
@@ -455,10 +455,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl : public RenderWidgetHost, |
bool GotResponseToLockMouseRequest(bool allowed); |
// Called by the view in response to OnSwapCompositorFrame. |
- static void SendReclaimCompositorResources( |
- int32_t route_id, |
- uint32_t compositor_frame_sink_id, |
- int renderer_host_id, |
+ void SendReclaimCompositorResources( |
bool is_swap_ack, |
const cc::ReturnedResourceArray& resources); |
@@ -577,6 +574,10 @@ class CONTENT_EXPORT RenderWidgetHostImpl : public RenderWidgetHost, |
// renderer unless it is for an immediate request. |
void RequestCompositionUpdates(bool immediate_request, bool monitor_updates); |
+ // Submits the frame received from RenderWidget. |
+ void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id, |
+ cc::CompositorFrame frame); |
+ |
protected: |
// --------------------------------------------------------------------------- |
// The following method is overridden by RenderViewHost to send upwards to |
@@ -929,10 +930,18 @@ class CONTENT_EXPORT RenderWidgetHostImpl : public RenderWidgetHost, |
std::unique_ptr<device::PowerSaveBlocker> power_save_blocker_; |
#endif |
+ // These information are used to verify that the renderer does not misbehave |
+ // when it comes to allocating LocalSurfaceIds. If frame size or device scale |
+ // factor change, a new LocalSurfaceId must be created. |
cc::LocalSurfaceId last_local_surface_id_; |
gfx::Size last_frame_size_; |
float last_device_scale_factor_; |
+ // Each instance of RendererCompositorFrameSink has an ID that we keep track |
+ // of so we can tell when a new instance has been created for the purpose of |
+ // not returning stale resources. |
+ uint32_t last_compositor_frame_sink_id_ = 0; |
+ |
base::WeakPtrFactory<RenderWidgetHostImpl> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostImpl); |