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

Side by Side Diff: content/browser/renderer_host/browser_compositor_view_mac.mm

Issue 2773433003: Fix CompositorResizeLock to do something. (Closed)
Patch Set: resizelock: 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 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/renderer_host/browser_compositor_view_mac.h" 5 #include "content/browser/renderer_host/browser_compositor_view_mac.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/lazy_instance.h" 11 #include "base/lazy_instance.h"
12 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
13 #include "content/browser/compositor/image_transport_factory.h" 13 #include "content/browser/compositor/image_transport_factory.h"
14 #include "content/browser/renderer_host/resize_lock.h"
15 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/context_factory.h" 15 #include "content/public/browser/context_factory.h"
17 #include "media/base/video_frame.h" 16 #include "media/base/video_frame.h"
18 #include "ui/accelerated_widget_mac/accelerated_widget_mac.h" 17 #include "ui/accelerated_widget_mac/accelerated_widget_mac.h"
19 #include "ui/accelerated_widget_mac/window_resize_helper_mac.h" 18 #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
20 #include "ui/base/layout.h" 19 #include "ui/base/layout.h"
21 #include "ui/gfx/geometry/dip_util.h" 20 #include "ui/gfx/geometry/dip_util.h"
22 21
23 namespace content { 22 namespace content {
24 23
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // ui::CompositorObserver implementation: 84 // ui::CompositorObserver implementation:
86 void OnCompositingDidCommit(ui::Compositor* compositor) override; 85 void OnCompositingDidCommit(ui::Compositor* compositor) override;
87 void OnCompositingStarted(ui::Compositor* compositor, 86 void OnCompositingStarted(ui::Compositor* compositor,
88 base::TimeTicks start_time) override {} 87 base::TimeTicks start_time) override {}
89 void OnCompositingEnded(ui::Compositor* compositor) override {} 88 void OnCompositingEnded(ui::Compositor* compositor) override {}
90 void OnCompositingLockStateChanged(ui::Compositor* compositor) override {} 89 void OnCompositingLockStateChanged(ui::Compositor* compositor) override {}
91 void OnCompositingShuttingDown(ui::Compositor* compositor) override {} 90 void OnCompositingShuttingDown(ui::Compositor* compositor) override {}
92 91
93 std::unique_ptr<ui::AcceleratedWidgetMac> accelerated_widget_mac_; 92 std::unique_ptr<ui::AcceleratedWidgetMac> accelerated_widget_mac_;
94 ui::Compositor compositor_; 93 ui::Compositor compositor_;
95 scoped_refptr<ui::CompositorLock> compositor_suspended_lock_; 94 std::unique_ptr<ui::CompositorLock> compositor_suspended_lock_;
96 95
97 DISALLOW_COPY_AND_ASSIGN(RecyclableCompositorMac); 96 DISALLOW_COPY_AND_ASSIGN(RecyclableCompositorMac);
98 }; 97 };
99 98
100 RecyclableCompositorMac::RecyclableCompositorMac() 99 RecyclableCompositorMac::RecyclableCompositorMac()
101 : accelerated_widget_mac_(new ui::AcceleratedWidgetMac()), 100 : accelerated_widget_mac_(new ui::AcceleratedWidgetMac()),
102 compositor_(content::GetContextFactoryPrivate()->AllocateFrameSinkId(), 101 compositor_(content::GetContextFactoryPrivate()->AllocateFrameSinkId(),
103 content::GetContextFactory(), 102 content::GetContextFactory(),
104 content::GetContextFactoryPrivate(), 103 content::GetContextFactoryPrivate(),
105 ui::WindowResizeHelperMac::Get()->task_runner()) { 104 ui::WindowResizeHelperMac::Get()->task_runner()) {
106 compositor_.SetAcceleratedWidget( 105 compositor_.SetAcceleratedWidget(
107 accelerated_widget_mac_->accelerated_widget()); 106 accelerated_widget_mac_->accelerated_widget());
108 compositor_.SetLocksWillTimeOut(false);
109 Suspend(); 107 Suspend();
110 compositor_.AddObserver(this); 108 compositor_.AddObserver(this);
111 } 109 }
112 110
113 RecyclableCompositorMac::~RecyclableCompositorMac() { 111 RecyclableCompositorMac::~RecyclableCompositorMac() {
114 compositor_.RemoveObserver(this); 112 compositor_.RemoveObserver(this);
115 } 113 }
116 114
117 void RecyclableCompositorMac::Suspend() { 115 void RecyclableCompositorMac::Suspend() {
118 compositor_suspended_lock_ = compositor_.GetCompositorLock(); 116 // Requests a compositor lock without a timeout.
117 compositor_suspended_lock_ =
118 compositor_.GetCompositorLock(nullptr, base::TimeDelta());
119 } 119 }
120 120
121 void RecyclableCompositorMac::Unsuspend() { 121 void RecyclableCompositorMac::Unsuspend() {
122 compositor_suspended_lock_ = nullptr; 122 compositor_suspended_lock_ = nullptr;
123 } 123 }
124 124
125 void RecyclableCompositorMac::OnCompositingDidCommit( 125 void RecyclableCompositorMac::OnCompositingDidCommit(
126 ui::Compositor* compositor_that_did_commit) { 126 ui::Compositor* compositor_that_did_commit) {
127 DCHECK_EQ(compositor_that_did_commit, compositor()); 127 DCHECK_EQ(compositor_that_did_commit, compositor());
128 content::ImageTransportFactory::GetInstance() 128 content::ImageTransportFactory::GetInstance()
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 gfx::Size BrowserCompositorMac::DelegatedFrameHostDesiredSizeInDIP() const { 416 gfx::Size BrowserCompositorMac::DelegatedFrameHostDesiredSizeInDIP() const {
417 NSRect bounds = [client_->BrowserCompositorMacGetNSView() bounds]; 417 NSRect bounds = [client_->BrowserCompositorMacGetNSView() bounds];
418 return gfx::Size(bounds.size.width, bounds.size.height); 418 return gfx::Size(bounds.size.width, bounds.size.height);
419 } 419 }
420 420
421 bool BrowserCompositorMac::DelegatedFrameCanCreateResizeLock() const { 421 bool BrowserCompositorMac::DelegatedFrameCanCreateResizeLock() const {
422 // Mac uses the RenderWidgetResizeHelper instead of a resize lock. 422 // Mac uses the RenderWidgetResizeHelper instead of a resize lock.
423 return false; 423 return false;
424 } 424 }
425 425
426 std::unique_ptr<ResizeLock> 426 std::unique_ptr<CompositorResizeLock>
427 BrowserCompositorMac::DelegatedFrameHostCreateResizeLock( 427 BrowserCompositorMac::DelegatedFrameHostCreateResizeLock() {
428 bool defer_compositor_lock) {
429 NOTREACHED(); 428 NOTREACHED();
430 return std::unique_ptr<ResizeLock>(); 429 return nullptr;
431 } 430 }
432 431
433 void BrowserCompositorMac::DelegatedFrameHostResizeLockWasReleased() { 432 void BrowserCompositorMac::DelegatedFrameHostResizeLockWasReleased() {
434 NOTREACHED(); 433 NOTREACHED();
435 } 434 }
436 435
437 void BrowserCompositorMac::DelegatedFrameHostSendReclaimCompositorResources( 436 void BrowserCompositorMac::DelegatedFrameHostSendReclaimCompositorResources(
438 int compositor_frame_sink_id, 437 int compositor_frame_sink_id,
439 bool is_swap_ack, 438 bool is_swap_ack,
440 const cc::ReturnedResourceArray& resources) { 439 const cc::ReturnedResourceArray& resources) {
441 client_->BrowserCompositorMacSendReclaimCompositorResources( 440 client_->BrowserCompositorMacSendReclaimCompositorResources(
442 compositor_frame_sink_id, is_swap_ack, resources); 441 compositor_frame_sink_id, is_swap_ack, resources);
443 } 442 }
444 443
445 void BrowserCompositorMac::OnBeginFrame(const cc::BeginFrameArgs& args) { 444 void BrowserCompositorMac::OnBeginFrame(const cc::BeginFrameArgs& args) {
446 client_->BrowserCompositorMacSendBeginFrame(args); 445 client_->BrowserCompositorMacSendBeginFrame(args);
447 } 446 }
448 447
449 bool BrowserCompositorMac::IsAutoResizeEnabled() const { 448 bool BrowserCompositorMac::IsAutoResizeEnabled() const {
450 NOTREACHED(); 449 NOTREACHED();
451 return false; 450 return false;
452 } 451 }
453 452
454 } // namespace content 453 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698