Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Side by Side Diff: content/browser/renderer_host/delegated_frame_host_client_aura.cc

Issue 2773433003: Fix CompositorResizeLock to do something. (Closed)
Patch Set: resizelock: observer-rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/renderer_host/delegated_frame_host_client_aura.h" 5 #include "content/browser/renderer_host/delegated_frame_host_client_aura.h"
6 6
7 #include "content/browser/renderer_host/compositor_resize_lock_aura.h"
8 #include "content/browser/renderer_host/render_widget_host_impl.h" 7 #include "content/browser/renderer_host/render_widget_host_impl.h"
9 #include "content/browser/renderer_host/render_widget_host_view_aura.h" 8 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
10 #include "content/common/view_messages.h" 9 #include "content/common/view_messages.h"
11 #include "ui/aura/window.h" 10 #include "ui/aura/window.h"
11 #include "ui/aura/window_event_dispatcher.h"
12 #include "ui/aura/window_tree_host.h"
12 #include "ui/compositor/layer.h" 13 #include "ui/compositor/layer.h"
13 14
14 namespace content { 15 namespace content {
15 namespace {
16
17 // When accelerated compositing is enabled and a widget resize is pending,
18 // we delay further resizes of the UI. The following constant is the maximum
19 // length of time that we should delay further UI resizes while waiting for a
20 // resized frame from a renderer.
21 const int kResizeLockTimeoutMs = 67;
22
23 } // namespace
24 16
25 DelegatedFrameHostClientAura::DelegatedFrameHostClientAura( 17 DelegatedFrameHostClientAura::DelegatedFrameHostClientAura(
26 RenderWidgetHostViewAura* render_widget_host_view) 18 RenderWidgetHostViewAura* render_widget_host_view)
27 : render_widget_host_view_(render_widget_host_view) {} 19 : render_widget_host_view_(render_widget_host_view) {}
28 20
29 DelegatedFrameHostClientAura::~DelegatedFrameHostClientAura() {} 21 DelegatedFrameHostClientAura::~DelegatedFrameHostClientAura() {}
30 22
31 ui::Layer* DelegatedFrameHostClientAura::DelegatedFrameHostGetLayer() const { 23 ui::Layer* DelegatedFrameHostClientAura::DelegatedFrameHostGetLayer() const {
32 return render_widget_host_view_->window_->layer(); 24 return render_widget_host_view_->window_->layer();
33 } 25 }
(...skipping 30 matching lines...) Expand all
64 return false; 56 return false;
65 #else 57 #else
66 if (!render_widget_host_view_->host_->renderer_initialized() || 58 if (!render_widget_host_view_->host_->renderer_initialized() ||
67 render_widget_host_view_->host_->auto_resize_enabled()) { 59 render_widget_host_view_->host_->auto_resize_enabled()) {
68 return false; 60 return false;
69 } 61 }
70 return true; 62 return true;
71 #endif 63 #endif
72 } 64 }
73 65
74 std::unique_ptr<ResizeLock> 66 std::unique_ptr<CompositorResizeLock>
75 DelegatedFrameHostClientAura::DelegatedFrameHostCreateResizeLock( 67 DelegatedFrameHostClientAura::DelegatedFrameHostCreateResizeLock() {
76 bool defer_compositor_lock) { 68 // Pointer moves are released when the CompositorResizeLock ends.
69 auto* host = render_widget_host_view_->window_->GetHost();
70 host->dispatcher()->HoldPointerMoves();
71
77 gfx::Size desired_size = render_widget_host_view_->window_->bounds().size(); 72 gfx::Size desired_size = render_widget_host_view_->window_->bounds().size();
78 return std::unique_ptr<ResizeLock>(new CompositorResizeLock( 73 return base::MakeUnique<CompositorResizeLock>(this, desired_size);
79 render_widget_host_view_->window_->GetHost(), desired_size,
80 defer_compositor_lock,
81 base::TimeDelta::FromMilliseconds(kResizeLockTimeoutMs)));
82 } 74 }
83 75
84 void DelegatedFrameHostClientAura::DelegatedFrameHostResizeLockWasReleased() { 76 void DelegatedFrameHostClientAura::DelegatedFrameHostResizeLockWasReleased() {
85 render_widget_host_view_->host_->WasResized(); 77 render_widget_host_view_->host_->WasResized();
86 } 78 }
87 79
88 void DelegatedFrameHostClientAura:: 80 void DelegatedFrameHostClientAura::
89 DelegatedFrameHostSendReclaimCompositorResources( 81 DelegatedFrameHostSendReclaimCompositorResources(
90 int compositor_frame_sink_id, 82 int compositor_frame_sink_id,
91 bool is_swap_ack, 83 bool is_swap_ack,
92 const cc::ReturnedResourceArray& resources) { 84 const cc::ReturnedResourceArray& resources) {
93 render_widget_host_view_->host_->Send(new ViewMsg_ReclaimCompositorResources( 85 render_widget_host_view_->host_->Send(new ViewMsg_ReclaimCompositorResources(
94 render_widget_host_view_->host_->GetRoutingID(), compositor_frame_sink_id, 86 render_widget_host_view_->host_->GetRoutingID(), compositor_frame_sink_id,
95 is_swap_ack, resources)); 87 is_swap_ack, resources));
96 } 88 }
97 89
98 void DelegatedFrameHostClientAura::OnBeginFrame( 90 void DelegatedFrameHostClientAura::OnBeginFrame(
99 const cc::BeginFrameArgs& args) { 91 const cc::BeginFrameArgs& args) {
100 render_widget_host_view_->OnBeginFrame(args); 92 render_widget_host_view_->OnBeginFrame(args);
101 } 93 }
102 94
103 bool DelegatedFrameHostClientAura::IsAutoResizeEnabled() const { 95 bool DelegatedFrameHostClientAura::IsAutoResizeEnabled() const {
104 return render_widget_host_view_->host_->auto_resize_enabled(); 96 return render_widget_host_view_->host_->auto_resize_enabled();
105 } 97 }
106 98
99 std::unique_ptr<ui::CompositorLock>
100 DelegatedFrameHostClientAura::GetCompositorLock(
101 ui::CompositorLockClient* client) {
102 auto* host = render_widget_host_view_->window_->GetHost();
103 return host->compositor()->GetCompositorLock(client);
104 }
105
106 void DelegatedFrameHostClientAura::CompositorResizeLockEnded() {
107 auto* host = render_widget_host_view_->window_->GetHost();
108 host->dispatcher()->ReleasePointerMoves();
109 }
110
107 } // namespace content 111 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698