| Index: cc/surfaces/surface.h
|
| diff --git a/cc/surfaces/surface.h b/cc/surfaces/surface.h
|
| index 7614440fd9c08074f6c33d09a606e376c50ec030..b71413dfbf1240ba37e104284fccd8f19fb6dd70 100644
|
| --- a/cc/surfaces/surface.h
|
| +++ b/cc/surfaces/surface.h
|
| @@ -41,6 +41,7 @@ class SurfaceFactory;
|
| class CC_SURFACES_EXPORT Surface {
|
| public:
|
| using DrawCallback = SurfaceFactory::DrawCallback;
|
| + using WillDrawCallback = SurfaceFactory::WillDrawCallback;
|
|
|
| Surface(const SurfaceId& id, base::WeakPtr<SurfaceFactory> factory);
|
| ~Surface();
|
| @@ -52,7 +53,9 @@ class CC_SURFACES_EXPORT Surface {
|
|
|
| void SetPreviousFrameSurface(Surface* surface);
|
|
|
| - void QueueFrame(CompositorFrame frame, const DrawCallback& draw_callback);
|
| + void QueueFrame(CompositorFrame frame,
|
| + const DrawCallback& draw_callback,
|
| + const WillDrawCallback& will_draw_callback);
|
| void EvictFrame();
|
| void RequestCopyOfOutput(std::unique_ptr<CopyOutputRequest> copy_request);
|
|
|
| @@ -85,6 +88,7 @@ class CC_SURFACES_EXPORT Surface {
|
|
|
| void TakeLatencyInfo(std::vector<ui::LatencyInfo>* latency_info);
|
| void RunDrawCallbacks();
|
| + void RunWillDrawCallbacks(const gfx::Rect& damage_rect);
|
|
|
| base::WeakPtr<SurfaceFactory> factory() { return factory_; }
|
|
|
| @@ -119,12 +123,15 @@ class CC_SURFACES_EXPORT Surface {
|
|
|
| private:
|
| struct FrameData {
|
| - FrameData(CompositorFrame&& frame, const DrawCallback& draw_callback);
|
| + FrameData(CompositorFrame&& frame,
|
| + const DrawCallback& draw_callback,
|
| + const WillDrawCallback& will_draw_callback);
|
| FrameData(FrameData&& other);
|
| ~FrameData();
|
| FrameData& operator=(FrameData&& other);
|
| CompositorFrame frame;
|
| DrawCallback draw_callback;
|
| + WillDrawCallback will_draw_callback;
|
| };
|
|
|
| void ActivatePendingFrame();
|
|
|