| Index: cc/surfaces/surface.h
|
| diff --git a/cc/surfaces/surface.h b/cc/surfaces/surface.h
|
| index 7614440fd9c08074f6c33d09a606e376c50ec030..5d1e63e7c9b6956c533ba581babe4cb784f051d8 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,14 @@ class CC_SURFACES_EXPORT Surface {
|
|
|
| void SetPreviousFrameSurface(Surface* surface);
|
|
|
| - void QueueFrame(CompositorFrame frame, const DrawCallback& draw_callback);
|
| + // |draw_callback| is called once to notify the client that the previously
|
| + // submitted CompositorFrame is processed and that another frame can be
|
| + // submitted.
|
| + // |will_draw_callback| is called when |surface| is scheduled for a draw and
|
| + // there is visible damage.
|
| + void QueueFrame(CompositorFrame frame,
|
| + const DrawCallback& draw_callback,
|
| + const WillDrawCallback& will_draw_callback);
|
| void EvictFrame();
|
| void RequestCopyOfOutput(std::unique_ptr<CopyOutputRequest> copy_request);
|
|
|
| @@ -84,7 +92,8 @@ class CC_SURFACES_EXPORT Surface {
|
| int frame_index() const { return frame_index_; }
|
|
|
| void TakeLatencyInfo(std::vector<ui::LatencyInfo>* latency_info);
|
| - void RunDrawCallbacks();
|
| + void RunDrawCallback();
|
| + void RunWillDrawCallback(const gfx::Rect& damage_rect);
|
|
|
| base::WeakPtr<SurfaceFactory> factory() { return factory_; }
|
|
|
| @@ -119,12 +128,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();
|
|
|