1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_SURFACES_SURFACE_H_
6 #define CC_SURFACES_SURFACE_H_
8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/surfaces/surfaces_export.h"
11 #include "ui/gfx/size.h"
14 class CompositorFrame
;
18 class CC_SURFACES_EXPORT Surface
{
20 Surface(SurfaceManager
* manager
,
21 SurfaceClient
* client
,
22 const gfx::Size
& size
);
25 const gfx::Size
& size() const { return size_
; }
26 int surface_id() const { return surface_id_
; }
28 void QueueFrame(scoped_ptr
<CompositorFrame
> frame
);
29 // Returns the most recent frame that is eligible to be rendered.
30 CompositorFrame
* GetEligibleFrame();
33 SurfaceManager
* manager_
;
34 SurfaceClient
* client_
;
37 // TODO(jamesr): Support multiple frames in flight.
38 scoped_ptr
<CompositorFrame
> current_frame_
;
40 DISALLOW_COPY_AND_ASSIGN(Surface
);
45 #endif // CC_SURFACES_SURFACE_H_