| 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 "content/browser/compositor/delegated_frame_host.h" | 5 #include "content/browser/compositor/delegated_frame_host.h" |
| 6 | 6 |
| 7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "cc/output/compositor_frame.h" | 9 #include "cc/output/compositor_frame.h" |
| 10 #include "cc/output/compositor_frame_ack.h" | 10 #include "cc/output/compositor_frame_ack.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 | 75 |
| 76 //////////////////////////////////////////////////////////////////////////////// | 76 //////////////////////////////////////////////////////////////////////////////// |
| 77 // DelegatedFrameHost | 77 // DelegatedFrameHost |
| 78 | 78 |
| 79 DelegatedFrameHost::DelegatedFrameHost(DelegatedFrameHostClient* client) | 79 DelegatedFrameHost::DelegatedFrameHost(DelegatedFrameHostClient* client) |
| 80 : client_(client), | 80 : client_(client), |
| 81 use_surfaces_(UseSurfacesEnabled()), | 81 use_surfaces_(UseSurfacesEnabled()), |
| 82 last_output_surface_id_(0), | 82 last_output_surface_id_(0), |
| 83 pending_delegated_ack_count_(0), | 83 pending_delegated_ack_count_(0), |
| 84 skipped_frames_(false), | 84 skipped_frames_(false), |
| 85 current_scale_factor_(1.f), |
| 85 can_lock_compositor_(YES_CAN_LOCK), | 86 can_lock_compositor_(YES_CAN_LOCK), |
| 86 delegated_frame_evictor_(new DelegatedFrameEvictor(this)) { | 87 delegated_frame_evictor_(new DelegatedFrameEvictor(this)) { |
| 87 ImageTransportFactory::GetInstance()->AddObserver(this); | 88 ImageTransportFactory::GetInstance()->AddObserver(this); |
| 88 } | 89 } |
| 89 | 90 |
| 90 void DelegatedFrameHost::WasShown(const ui::LatencyInfo& latency_info) { | 91 void DelegatedFrameHost::WasShown(const ui::LatencyInfo& latency_info) { |
| 91 delegated_frame_evictor_->SetVisible(true); | 92 delegated_frame_evictor_->SetVisible(true); |
| 92 | 93 |
| 93 if (surface_id_.is_null() && !frame_provider_.get() && | 94 if (surface_id_.is_null() && !frame_provider_.get() && |
| 94 !released_front_lock_.get()) { | 95 !released_front_lock_.get()) { |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 frame_size_in_dip != current_frame_size_in_dip_) { | 401 frame_size_in_dip != current_frame_size_in_dip_) { |
| 401 if (!surface_id_.is_null()) | 402 if (!surface_id_.is_null()) |
| 402 surface_factory_->Destroy(surface_id_); | 403 surface_factory_->Destroy(surface_id_); |
| 403 surface_id_ = id_allocator_->GenerateId(); | 404 surface_id_ = id_allocator_->GenerateId(); |
| 404 surface_factory_->Create(surface_id_, frame_size); | 405 surface_factory_->Create(surface_id_, frame_size); |
| 405 // manager must outlive compositors using it. | 406 // manager must outlive compositors using it. |
| 406 client_->GetLayer()->SetShowSurface( | 407 client_->GetLayer()->SetShowSurface( |
| 407 surface_id_, | 408 surface_id_, |
| 408 base::Bind(&SatisfyCallback, base::Unretained(manager)), | 409 base::Bind(&SatisfyCallback, base::Unretained(manager)), |
| 409 base::Bind(&RequireCallback, base::Unretained(manager)), frame_size, | 410 base::Bind(&RequireCallback, base::Unretained(manager)), frame_size, |
| 410 frame_size_in_dip); | 411 frame_device_scale_factor, frame_size_in_dip); |
| 411 current_surface_size_ = frame_size; | 412 current_surface_size_ = frame_size; |
| 413 current_scale_factor_ = frame_device_scale_factor; |
| 412 } | 414 } |
| 413 scoped_ptr<cc::CompositorFrame> compositor_frame = | 415 scoped_ptr<cc::CompositorFrame> compositor_frame = |
| 414 make_scoped_ptr(new cc::CompositorFrame()); | 416 make_scoped_ptr(new cc::CompositorFrame()); |
| 415 compositor_frame->delegated_frame_data = frame_data.Pass(); | 417 compositor_frame->delegated_frame_data = frame_data.Pass(); |
| 416 | 418 |
| 417 compositor_frame->metadata.latency_info.swap(skipped_latency_info_list_); | 419 compositor_frame->metadata.latency_info.swap(skipped_latency_info_list_); |
| 418 compositor_frame->metadata.latency_info.insert( | 420 compositor_frame->metadata.latency_info.insert( |
| 419 compositor_frame->metadata.latency_info.end(), | 421 compositor_frame->metadata.latency_info.end(), |
| 420 latency_info.begin(), | 422 latency_info.begin(), |
| 421 latency_info.end()); | 423 latency_info.end()); |
| (...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1007 if (frame_provider_.get()) { | 1009 if (frame_provider_.get()) { |
| 1008 new_layer->SetShowDelegatedContent(frame_provider_.get(), | 1010 new_layer->SetShowDelegatedContent(frame_provider_.get(), |
| 1009 current_frame_size_in_dip_); | 1011 current_frame_size_in_dip_); |
| 1010 } | 1012 } |
| 1011 if (!surface_id_.is_null()) { | 1013 if (!surface_id_.is_null()) { |
| 1012 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 1014 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| 1013 cc::SurfaceManager* manager = factory->GetSurfaceManager(); | 1015 cc::SurfaceManager* manager = factory->GetSurfaceManager(); |
| 1014 new_layer->SetShowSurface( | 1016 new_layer->SetShowSurface( |
| 1015 surface_id_, base::Bind(&SatisfyCallback, base::Unretained(manager)), | 1017 surface_id_, base::Bind(&SatisfyCallback, base::Unretained(manager)), |
| 1016 base::Bind(&RequireCallback, base::Unretained(manager)), | 1018 base::Bind(&RequireCallback, base::Unretained(manager)), |
| 1017 current_surface_size_, current_frame_size_in_dip_); | 1019 current_surface_size_, current_scale_factor_, |
| 1020 current_frame_size_in_dip_); |
| 1018 } | 1021 } |
| 1019 } | 1022 } |
| 1020 | 1023 |
| 1021 } // namespace content | 1024 } // namespace content |
| OLD | NEW |