1 // Copyright 2015 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 COMPONENTS_VIEW_MANAGER_SURFACES_SURFACES_STATE_H_
6 #define COMPONENTS_VIEW_MANAGER_SURFACES_SURFACES_STATE_H_
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/surfaces/surface_manager.h"
11 #include "components/view_manager/surfaces/surfaces_scheduler.h"
19 // The SurfacesState object is an object global to the View Manager app that
20 // holds the SurfaceManager, SurfacesScheduler and allocates new Surfaces
21 // namespaces. This object lives on the main thread of the View Manager.
22 // TODO(rjkroege, fsamuel): This object will need to change to support multiple
24 class SurfacesState
: public base::RefCounted
<SurfacesState
> {
28 uint32_t next_id_namespace() { return next_id_namespace_
++; }
30 cc::SurfaceManager
* manager() { return &manager_
; }
32 SurfacesScheduler
* scheduler() { return &scheduler_
; }
35 friend class base::RefCounted
<SurfacesState
>;
38 // A Surface ID is an unsigned 64-bit int where the high 32-bits are generated
39 // by the Surfaces service, and the low 32-bits are generated by the process
40 // that requested the Surface.
41 uint32_t next_id_namespace_
;
42 cc::SurfaceManager manager_
;
43 SurfacesScheduler scheduler_
;
45 DISALLOW_COPY_AND_ASSIGN(SurfacesState
);
48 } // namespace surfaces
50 #endif // COMPONENTS_VIEW_MANAGER_SURFACES_SURFACES_STATE_H_