Linux: Depend on liberation-fonts package for RPMs.
[chromium-blink-merge.git] / components / mus / surfaces / surfaces_state.h
blob96385349d00188994ad551607b7ba91e903f16c9
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"
14 namespace cc {
15 class SurfaceHittest;
16 class SurfaceManager;
17 } // namespace cc
19 namespace mus {
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
25 // displays.
26 class SurfacesState : public base::RefCounted<SurfacesState> {
27 public:
28 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_; }
38 private:
39 friend class base::RefCounted<SurfacesState>;
40 ~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);
53 } // namespace mus
55 #endif // COMPONENTS_MUS_SURFACES_SURFACES_STATE_H_