1 // Copyright 2014 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. 4 5 #ifndef MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ 6 #define MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ 7 8 #include "base/macros.h" 9 #include "base/timer/timer.h" 10 #include "cc/surfaces/surface_manager.h" 11 #include "mojo/public/cpp/application/application_delegate.h" 12 #include "mojo/public/cpp/application/interface_factory.h" 13 #include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h" 14 #include "mojo/services/surfaces/surfaces_impl.h" 15 16 namespace mojo { 17 class ApplicationConnection; 18 19 class SurfacesServiceApplication : public ApplicationDelegate, 20 public InterfaceFactory<SurfacesService>, 21 public SurfacesImpl::Client { 22 public: 23 SurfacesServiceApplication(); 24 virtual ~SurfacesServiceApplication(); 25 26 // ApplicationDelegate implementation. 27 virtual bool ConfigureIncomingConnection( 28 ApplicationConnection* connection) OVERRIDE; 29 30 // InterfaceFactory<SurfacsServicee> implementation. 31 virtual void Create(ApplicationConnection* connection, 32 InterfaceRequest<SurfacesService> request) OVERRIDE; 33 34 // SurfacesImpl::Client implementation. 35 virtual void FrameSubmitted() OVERRIDE; 36 virtual void SetDisplay(cc::Display*) OVERRIDE; 37 38 private: 39 cc::SurfaceManager manager_; 40 uint32_t next_id_namespace_; 41 cc::Display* display_; 42 // TODO(jamesr): Integrate with real scheduler. 43 base::Timer draw_timer_; 44 45 DISALLOW_COPY_AND_ASSIGN(SurfacesServiceApplication); 46 }; 47 48 } // namespace mojo 49 50 #endif // MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ 51