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 "sky/compositor/layer_host.h" | 5 #include "sky/compositor/layer_host.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "mojo/converters/geometry/geometry_type_converters.h" | 9 #include "mojo/converters/geometry/geometry_type_converters.h" |
10 #include "mojo/gpu/gl_context.h" | 10 #include "mojo/gpu/gl_context.h" |
11 #include "mojo/services/surfaces/public/cpp/surfaces_utils.h" | 11 #include "mojo/services/surfaces/public/cpp/surfaces_utils.h" |
12 #include "mojo/skia/ganesh_context.h" | 12 #include "mojo/skia/ganesh_context.h" |
13 #include "sky/compositor/layer.h" | 13 #include "sky/compositor/layer.h" |
14 | 14 |
15 namespace sky { | 15 namespace sky { |
16 | 16 |
17 LayerHost::LayerHost(LayerHostClient* client) | 17 LayerHost::LayerHost(LayerHostClient* client) |
18 : client_(client), | 18 : client_(client), |
19 state_(kWaitingForSurfaceService), | 19 state_(kReadyForFrame), |
20 frame_requested_(false), | 20 frame_requested_(false), |
21 surface_holder_(this, client->GetShell()), | 21 surface_holder_(this, client->GetShell()), |
22 gl_context_owner_(client->GetShell()), | 22 gl_context_owner_(client->GetShell()), |
23 ganesh_context_(gl_context()), | 23 ganesh_context_(gl_context()), |
24 resource_manager_(gl_context()), | 24 resource_manager_(gl_context()), |
25 weak_factory_(this) { | 25 weak_factory_(this) { |
26 } | 26 } |
27 | 27 |
28 LayerHost::~LayerHost() { | 28 LayerHost::~LayerHost() { |
29 } | 29 } |
30 | 30 |
31 void LayerHost::SetNeedsAnimate() { | 31 void LayerHost::SetNeedsAnimate() { |
32 if (frame_requested_) | 32 if (frame_requested_) |
33 return; | 33 return; |
34 frame_requested_ = true; | 34 frame_requested_ = true; |
35 if (state_ == kReadyForFrame) | 35 if (state_ == kReadyForFrame) |
36 BeginFrameSoon(); | 36 BeginFrameSoon(); |
37 } | 37 } |
38 | 38 |
39 void LayerHost::SetRootLayer(scoped_refptr<Layer> layer) { | 39 void LayerHost::SetRootLayer(scoped_refptr<Layer> layer) { |
40 DCHECK(!root_layer_.get()); | 40 DCHECK(!root_layer_.get()); |
41 root_layer_ = layer; | 41 root_layer_ = layer; |
42 root_layer_->set_host(this); | 42 root_layer_->set_host(this); |
43 } | 43 } |
44 | 44 |
45 void LayerHost::GetPixelsForTesting(std::vector<unsigned char>* pixels) { | 45 void LayerHost::GetPixelsForTesting(std::vector<unsigned char>* pixels) { |
46 return root_layer_->GetPixelsForTesting(pixels); | 46 return root_layer_->GetPixelsForTesting(pixels); |
47 } | 47 } |
48 | 48 |
49 void LayerHost::OnSurfaceConnectionCreated() { | |
50 DCHECK_EQ(state_, kWaitingForSurfaceService); | |
51 state_ = kReadyForFrame; | |
52 if (frame_requested_) | |
53 BeginFrameSoon(); | |
54 } | |
55 | |
56 void LayerHost::OnSurfaceIdAvailable(mojo::SurfaceIdPtr surface_id) { | 49 void LayerHost::OnSurfaceIdAvailable(mojo::SurfaceIdPtr surface_id) { |
57 client_->OnSurfaceIdAvailable(surface_id.Pass()); | 50 client_->OnSurfaceIdAvailable(surface_id.Pass()); |
58 } | 51 } |
59 | 52 |
60 void LayerHost::ReturnResources( | 53 void LayerHost::ReturnResources( |
61 mojo::Array<mojo::ReturnedResourcePtr> resources) { | 54 mojo::Array<mojo::ReturnedResourcePtr> resources) { |
62 resource_manager_.ReturnResources(resources.Pass()); | 55 resource_manager_.ReturnResources(resources.Pass()); |
63 } | 56 } |
64 | 57 |
65 void LayerHost::BeginFrameSoon() { | 58 void LayerHost::BeginFrameSoon() { |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 } | 147 } |
155 | 148 |
156 void LayerHost::DidCompleteFrame() { | 149 void LayerHost::DidCompleteFrame() { |
157 DCHECK_EQ(state_, kWaitingForFrameAcknowldgement); | 150 DCHECK_EQ(state_, kWaitingForFrameAcknowldgement); |
158 state_ = kReadyForFrame; | 151 state_ = kReadyForFrame; |
159 if (frame_requested_) | 152 if (frame_requested_) |
160 BeginFrame(); | 153 BeginFrame(); |
161 } | 154 } |
162 | 155 |
163 } // namespace sky | 156 } // namespace sky |
OLD | NEW |