| 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 |