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#include "mojo/services/surfaces/surfaces_service_application.h" 6 7#include "cc/surfaces/display.h" 8 9#include "mojo/application/application_runner_chromium.h" 10#include "mojo/public/c/system/main.h" 11#include "mojo/services/surfaces/surfaces_service_impl.h" 12 13namespace mojo { 14 15SurfacesServiceApplication::SurfacesServiceApplication() 16 : next_id_namespace_(1u), display_(NULL), draw_timer_(false, false) { 17} 18 19SurfacesServiceApplication::~SurfacesServiceApplication() { 20} 21 22bool SurfacesServiceApplication::ConfigureIncomingConnection( 23 ApplicationConnection* connection) { 24 connection->AddService(this); 25 return true; 26} 27 28void SurfacesServiceApplication::Create( 29 ApplicationConnection* connection, 30 InterfaceRequest<SurfacesService> request) { 31 BindToRequest(new SurfacesServiceImpl(&manager_, &next_id_namespace_, this), 32 &request); 33} 34 35void SurfacesServiceApplication::FrameSubmitted() { 36 if (!draw_timer_.IsRunning() && display_) { 37 draw_timer_.Start(FROM_HERE, 38 base::TimeDelta::FromMilliseconds(17), 39 base::Bind(base::IgnoreResult(&cc::Display::Draw), 40 base::Unretained(display_))); 41 } 42} 43 44void SurfacesServiceApplication::SetDisplay(cc::Display* display) { 45 display_ = display; 46} 47 48} // namespace mojo 49 50MojoResult MojoMain(MojoHandle shell_handle) { 51 mojo::ApplicationRunnerChromium runner(new mojo::SurfacesServiceApplication); 52 return runner.Run(shell_handle); 53} 54