// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_MUS_SURFACES_SURFACES_STATE_H_ #define COMPONENTS_MUS_SURFACES_SURFACES_STATE_H_ #include #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "cc/surfaces/surface_hittest.h" #include "cc/surfaces/surface_manager.h" namespace cc { class SurfaceHittest; class SurfaceManager; } // namespace cc namespace mus { // The SurfacesState object is an object global to the Window Manager app that // holds the SurfaceManager and allocates new Surfaces namespaces. // This object lives on the main thread of the Window Manager. // TODO(rjkroege, fsamuel): This object will need to change to support multiple // displays. class SurfacesState : public base::RefCounted { public: SurfacesState(); uint32_t next_id_namespace() { return next_id_namespace_++; } cc::SurfaceManager* manager() { return &manager_; } cc::SurfaceHittest* hit_tester() { return &hit_tester_; } private: friend class base::RefCounted; ~SurfacesState(); // A Surface ID is an unsigned 64-bit int where the high 32-bits are generated // by the Surfaces service, and the low 32-bits are generated by the process // that requested the Surface. uint32_t next_id_namespace_; cc::SurfaceManager manager_; cc::SurfaceHittest hit_tester_; DISALLOW_COPY_AND_ASSIGN(SurfacesState); }; } // namespace mus #endif // COMPONENTS_MUS_SURFACES_SURFACES_STATE_H_