OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/macros.h" | 5 #include "base/macros.h" |
6 #include "mojo/application/application_runner_chromium.h" | 6 #include "mojo/application/application_runner_chromium.h" |
7 #include "mojo/public/c/system/main.h" | 7 #include "mojo/public/c/system/main.h" |
8 #include "mojo/public/cpp/application/application_connection.h" | 8 #include "mojo/public/cpp/application/application_connection.h" |
9 #include "mojo/public/cpp/application/application_delegate.h" | 9 #include "mojo/public/cpp/application/application_delegate.h" |
10 #include "mojo/public/cpp/application/application_impl.h" | 10 #include "mojo/public/cpp/application/application_impl.h" |
11 #include "mojo/services/view_manager/public/cpp/view.h" | 11 #include "mojo/services/view_manager/public/cpp/view.h" |
12 #include "mojo/services/view_manager/public/cpp/view_manager.h" | 12 #include "mojo/services/view_manager/public/cpp/view_manager.h" |
13 #include "mojo/services/view_manager/public/cpp/view_manager_client_factory.h" | 13 #include "mojo/services/view_manager/public/cpp/view_manager_client_factory.h" |
14 #include "mojo/services/view_manager/public/cpp/view_manager_delegate.h" | 14 #include "mojo/services/view_manager/public/cpp/view_manager_delegate.h" |
15 #include "sky/compositor/display_delegate_ganesh.h" | |
16 #include "sky/compositor/layer.h" | 15 #include "sky/compositor/layer.h" |
17 #include "sky/compositor/layer_host.h" | 16 #include "sky/compositor/layer_host.h" |
| 17 #include "sky/compositor/rasterizer_ganesh.h" |
18 #include "third_party/skia/include/core/SkCanvas.h" | 18 #include "third_party/skia/include/core/SkCanvas.h" |
19 | 19 |
20 namespace examples { | 20 namespace examples { |
21 namespace { | 21 namespace { |
22 | 22 |
23 gfx::Size ToSize(const mojo::Rect& rect) { | 23 gfx::Size ToSize(const mojo::Rect& rect) { |
24 return gfx::Size(rect.width, rect.height); | 24 return gfx::Size(rect.width, rect.height); |
25 } | 25 } |
26 | 26 |
27 int RadiusAt(base::TimeDelta delta) { | 27 int RadiusAt(base::TimeDelta delta) { |
28 return 50 + (delta.InMilliseconds() % 6000) * 100 / 6000; | 28 return 50 + (delta.InMilliseconds() % 6000) * 100 / 6000; |
29 } | 29 } |
30 } | 30 } |
31 | 31 |
32 class SkyCompositorApp : public mojo::ApplicationDelegate, | 32 class SkyCompositorApp : public mojo::ApplicationDelegate, |
33 public mojo::ViewManagerDelegate, | 33 public mojo::ViewManagerDelegate, |
34 public sky::LayerClient, | 34 public sky::LayerClient, |
35 public sky::LayerHostClient { | 35 public sky::LayerHostClient { |
36 public: | 36 public: |
37 SkyCompositorApp() : shell_(nullptr), view_(nullptr) {} | 37 SkyCompositorApp() : shell_(nullptr), view_(nullptr) {} |
38 virtual ~SkyCompositorApp() {} | 38 virtual ~SkyCompositorApp() {} |
39 | 39 |
40 void Initialize(mojo::ApplicationImpl* app) override { | 40 void Initialize(mojo::ApplicationImpl* app) override { |
41 shell_ = app->shell(); | 41 shell_ = app->shell(); |
42 view_manager_client_factory_.reset( | 42 view_manager_client_factory_.reset( |
43 new mojo::ViewManagerClientFactory(app->shell(), this)); | 43 new mojo::ViewManagerClientFactory(app->shell(), this)); |
44 | |
45 sky::DisplayDelegate::setDisplayDelegateCreateFunction( | |
46 sky::DisplayDelegateGanesh::create); | |
47 } | 44 } |
48 | 45 |
49 bool ConfigureIncomingConnection( | 46 bool ConfigureIncomingConnection( |
50 mojo::ApplicationConnection* connection) override { | 47 mojo::ApplicationConnection* connection) override { |
51 connection->AddService(view_manager_client_factory_.get()); | 48 connection->AddService(view_manager_client_factory_.get()); |
52 return true; | 49 return true; |
53 } | 50 } |
54 | 51 |
55 void OnEmbed(mojo::View* root, | 52 void OnEmbed(mojo::View* root, |
56 mojo::ServiceProviderImpl* exported_services, | 53 mojo::ServiceProviderImpl* exported_services, |
57 scoped_ptr<mojo::ServiceProvider> imported_services) override { | 54 scoped_ptr<mojo::ServiceProvider> imported_services) override { |
58 view_ = root; | 55 view_ = root; |
59 base_time_ = base::TimeTicks::Now(); | 56 base_time_ = base::TimeTicks::Now(); |
60 | 57 |
61 layer_host_.reset(new sky::LayerHost(this)); | 58 layer_host_.reset(new sky::LayerHost(this)); |
62 root_layer_ = make_scoped_refptr(new sky::Layer(this)); | 59 root_layer_ = make_scoped_refptr(new sky::Layer(this)); |
| 60 root_layer_->set_rasterizer( |
| 61 make_scoped_ptr(new sky::RasterizerGanesh(layer_host_.get()))); |
63 layer_host_->SetRootLayer(root_layer_); | 62 layer_host_->SetRootLayer(root_layer_); |
64 layer_host_->SetNeedsAnimate(); | 63 layer_host_->SetNeedsAnimate(); |
65 } | 64 } |
66 | 65 |
67 void OnViewManagerDisconnected(mojo::ViewManager* view_manager) override { | 66 void OnViewManagerDisconnected(mojo::ViewManager* view_manager) override { |
68 mojo::ApplicationImpl::Terminate(); | 67 mojo::ApplicationImpl::Terminate(); |
69 } | 68 } |
70 | 69 |
71 private: | 70 private: |
72 // sky::LayerHostClient | 71 // sky::LayerHostClient |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 | 106 |
108 DISALLOW_COPY_AND_ASSIGN(SkyCompositorApp); | 107 DISALLOW_COPY_AND_ASSIGN(SkyCompositorApp); |
109 }; | 108 }; |
110 | 109 |
111 } // namespace examples | 110 } // namespace examples |
112 | 111 |
113 MojoResult MojoMain(MojoHandle handle) { | 112 MojoResult MojoMain(MojoHandle handle) { |
114 mojo::ApplicationRunnerChromium runner(new examples::SkyCompositorApp); | 113 mojo::ApplicationRunnerChromium runner(new examples::SkyCompositorApp); |
115 return runner.Run(handle); | 114 return runner.Run(handle); |
116 } | 115 } |
OLD | NEW |