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_MUS_SURFACES_SURFACES_STATE_H_
6 #define COMPONENTS_MUS_SURFACES_SURFACES_STATE_H_
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/surfaces/surface_hittest.h"
11 #include "cc/surfaces/surface_manager.h"
12 #include "components/mus/surfaces/surfaces_scheduler.h"
21 // The SurfacesState object is an object global to the View Manager app that
22 // holds the SurfaceManager, SurfacesScheduler and allocates new Surfaces
23 // namespaces. This object lives on the main thread of the View Manager.
24 // TODO(rjkroege, fsamuel): This object will need to change to support multiple
26 class SurfacesState
: public base::RefCounted
<SurfacesState
> {
30 uint32_t next_id_namespace() { return next_id_namespace_
++; }
32 cc::SurfaceManager
* manager() { return &manager_
; }
34 cc::SurfaceHittest
* hit_tester() { return &hit_tester_
; }
36 SurfacesScheduler
* scheduler() { return &scheduler_
; }
39 friend class base::RefCounted
<SurfacesState
>;
42 // A Surface ID is an unsigned 64-bit int where the high 32-bits are generated
43 // by the Surfaces service, and the low 32-bits are generated by the process
44 // that requested the Surface.
45 uint32_t next_id_namespace_
;
46 cc::SurfaceManager manager_
;
47 cc::SurfaceHittest hit_tester_
;
48 SurfacesScheduler scheduler_
;
50 DISALLOW_COPY_AND_ASSIGN(SurfacesState
);
55 #endif // COMPONENTS_MUS_SURFACES_SURFACES_STATE_H_