Home | History | Annotate | Download | only in surfaces
      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 
     13 namespace mojo {
     14 
     15 SurfacesServiceApplication::SurfacesServiceApplication()
     16     : next_id_namespace_(1u), display_(NULL), draw_timer_(false, false) {
     17 }
     18 
     19 SurfacesServiceApplication::~SurfacesServiceApplication() {
     20 }
     21 
     22 bool SurfacesServiceApplication::ConfigureIncomingConnection(
     23     ApplicationConnection* connection) {
     24   connection->AddService(this);
     25   return true;
     26 }
     27 
     28 void SurfacesServiceApplication::Create(
     29     ApplicationConnection* connection,
     30     InterfaceRequest<SurfacesService> request) {
     31   BindToRequest(new SurfacesServiceImpl(&manager_, &next_id_namespace_, this),
     32                 &request);
     33 }
     34 
     35 void 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 
     44 void SurfacesServiceApplication::SetDisplay(cc::Display* display) {
     45   display_ = display;
     46 }
     47 
     48 }  // namespace mojo
     49 
     50 MojoResult MojoMain(MojoHandle shell_handle) {
     51   mojo::ApplicationRunnerChromium runner(new mojo::SurfacesServiceApplication);
     52   return runner.Run(shell_handle);
     53 }
     54