// Copyright 2014 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 MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ #define MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ #include "base/macros.h" #include "base/timer/timer.h" #include "cc/surfaces/surface_manager.h" #include "mojo/public/cpp/application/application_delegate.h" #include "mojo/public/cpp/application/interface_factory.h" #include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h" #include "mojo/services/surfaces/surfaces_impl.h" namespace mojo { class ApplicationConnection; class SurfacesServiceApplication : public ApplicationDelegate, public InterfaceFactory<SurfacesService>, public SurfacesImpl::Client { public: SurfacesServiceApplication(); virtual ~SurfacesServiceApplication(); // ApplicationDelegate implementation. virtual bool ConfigureIncomingConnection( ApplicationConnection* connection) OVERRIDE; // InterfaceFactory<SurfacsServicee> implementation. virtual void Create(ApplicationConnection* connection, InterfaceRequest<SurfacesService> request) OVERRIDE; // SurfacesImpl::Client implementation. virtual void FrameSubmitted() OVERRIDE; virtual void SetDisplay(cc::Display*) OVERRIDE; private: cc::SurfaceManager manager_; uint32_t next_id_namespace_; cc::Display* display_; // TODO(jamesr): Integrate with real scheduler. base::Timer draw_timer_; DISALLOW_COPY_AND_ASSIGN(SurfacesServiceApplication); }; } // namespace mojo #endif // MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_