OLD | NEW |
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 Loading... |
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 |
OLD | NEW |