| 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, |
| (...skipping 12 matching lines...) Expand all Loading... |
| 104 render_widget_host_view_->added_frame_observer_ = false; | 96 render_widget_host_view_->added_frame_observer_ = false; |
| 105 } | 97 } |
| 106 render_widget_host_view_->begin_frame_source_ = source; | 98 render_widget_host_view_->begin_frame_source_ = source; |
| 107 render_widget_host_view_->UpdateNeedsBeginFramesInternal(); | 99 render_widget_host_view_->UpdateNeedsBeginFramesInternal(); |
| 108 } | 100 } |
| 109 | 101 |
| 110 bool DelegatedFrameHostClientAura::IsAutoResizeEnabled() const { | 102 bool DelegatedFrameHostClientAura::IsAutoResizeEnabled() const { |
| 111 return render_widget_host_view_->host_->auto_resize_enabled(); | 103 return render_widget_host_view_->host_->auto_resize_enabled(); |
| 112 } | 104 } |
| 113 | 105 |
| 106 scoped_refptr<ui::CompositorLock> |
| 107 DelegatedFrameHostClientAura::GetCompositorLock( |
| 108 ui::CompositorLockClient* client) { |
| 109 auto* host = render_widget_host_view_->window_->GetHost(); |
| 110 return host->compositor()->GetCompositorLock(client); |
| 111 } |
| 112 |
| 113 void DelegatedFrameHostClientAura::CompositorResizeLockEnded() { |
| 114 auto* host = render_widget_host_view_->window_->GetHost(); |
| 115 host->dispatcher()->ReleasePointerMoves(); |
| 116 } |
| 117 |
| 114 } // namespace content | 118 } // namespace content |
| OLD | NEW |