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

Side by Side Diff: cc/trees/proxy_main.cc

Issue 2757373002: Fixing flakiness of TextureLayerChangeInvisibleMailboxTest (Closed)
Patch Set: Invalidate on DidLose 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "cc/trees/proxy_main.h" 5 #include "cc/trees/proxy_main.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 18 matching lines...) Expand all
29 TaskRunnerProvider* task_runner_provider) 29 TaskRunnerProvider* task_runner_provider)
30 : layer_tree_host_(layer_tree_host), 30 : layer_tree_host_(layer_tree_host),
31 task_runner_provider_(task_runner_provider), 31 task_runner_provider_(task_runner_provider),
32 layer_tree_host_id_(layer_tree_host->GetId()), 32 layer_tree_host_id_(layer_tree_host->GetId()),
33 max_requested_pipeline_stage_(NO_PIPELINE_STAGE), 33 max_requested_pipeline_stage_(NO_PIPELINE_STAGE),
34 current_pipeline_stage_(NO_PIPELINE_STAGE), 34 current_pipeline_stage_(NO_PIPELINE_STAGE),
35 final_pipeline_stage_(NO_PIPELINE_STAGE), 35 final_pipeline_stage_(NO_PIPELINE_STAGE),
36 commit_waits_for_activation_(false), 36 commit_waits_for_activation_(false),
37 started_(false), 37 started_(false),
38 defer_commits_(false), 38 defer_commits_(false),
39 compositor_frame_sink_weak_factory_(this),
39 weak_factory_(this) { 40 weak_factory_(this) {
40 TRACE_EVENT0("cc", "ProxyMain::ProxyMain"); 41 TRACE_EVENT0("cc", "ProxyMain::ProxyMain");
41 DCHECK(task_runner_provider_); 42 DCHECK(task_runner_provider_);
42 DCHECK(IsMainThread()); 43 DCHECK(IsMainThread());
43 } 44 }
44 45
45 ProxyMain::~ProxyMain() { 46 ProxyMain::~ProxyMain() {
46 TRACE_EVENT0("cc", "ProxyMain::~ProxyMain"); 47 TRACE_EVENT0("cc", "ProxyMain::~ProxyMain");
47 DCHECK(IsMainThread()); 48 DCHECK(IsMainThread());
48 DCHECK(!started_); 49 DCHECK(!started_);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 82
82 void ProxyMain::SetAnimationEvents(std::unique_ptr<MutatorEvents> events) { 83 void ProxyMain::SetAnimationEvents(std::unique_ptr<MutatorEvents> events) {
83 TRACE_EVENT0("cc", "ProxyMain::SetAnimationEvents"); 84 TRACE_EVENT0("cc", "ProxyMain::SetAnimationEvents");
84 DCHECK(IsMainThread()); 85 DCHECK(IsMainThread());
85 layer_tree_host_->SetAnimationEvents(std::move(events)); 86 layer_tree_host_->SetAnimationEvents(std::move(events));
86 } 87 }
87 88
88 void ProxyMain::DidLoseCompositorFrameSink() { 89 void ProxyMain::DidLoseCompositorFrameSink() {
89 TRACE_EVENT0("cc", "ProxyMain::DidLoseCompositorFrameSink"); 90 TRACE_EVENT0("cc", "ProxyMain::DidLoseCompositorFrameSink");
90 DCHECK(IsMainThread()); 91 DCHECK(IsMainThread());
92 compositor_frame_sink_weak_factory_.InvalidateWeakPtrs();
91 layer_tree_host_->DidLoseCompositorFrameSink(); 93 layer_tree_host_->DidLoseCompositorFrameSink();
92 } 94 }
93 95
94 void ProxyMain::RequestNewCompositorFrameSink() { 96 void ProxyMain::RequestNewCompositorFrameSink() {
95 TRACE_EVENT0("cc", "ProxyMain::RequestNewCompositorFrameSink"); 97 TRACE_EVENT0("cc", "ProxyMain::RequestNewCompositorFrameSink");
96 DCHECK(IsMainThread()); 98 DCHECK(IsMainThread());
97 layer_tree_host_->RequestNewCompositorFrameSink(); 99 layer_tree_host_->RequestNewCompositorFrameSink();
98 } 100 }
99 101
100 void ProxyMain::DidInitializeCompositorFrameSink(bool success) { 102 void ProxyMain::DidInitializeCompositorFrameSink(bool success) {
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 // With ProxyMain, we use a pending tree and activate it once it's ready to 284 // With ProxyMain, we use a pending tree and activate it once it's ready to
283 // draw to allow input to modify the active tree and draw during raster. 285 // draw to allow input to modify the active tree and draw during raster.
284 return false; 286 return false;
285 } 287 }
286 288
287 void ProxyMain::SetCompositorFrameSink( 289 void ProxyMain::SetCompositorFrameSink(
288 CompositorFrameSink* compositor_frame_sink) { 290 CompositorFrameSink* compositor_frame_sink) {
289 ImplThreadTaskRunner()->PostTask( 291 ImplThreadTaskRunner()->PostTask(
290 FROM_HERE, 292 FROM_HERE,
291 base::Bind(&ProxyImpl::InitializeCompositorFrameSinkOnImpl, 293 base::Bind(&ProxyImpl::InitializeCompositorFrameSinkOnImpl,
292 base::Unretained(proxy_impl_.get()), compositor_frame_sink)); 294 base::Unretained(proxy_impl_.get()), compositor_frame_sink,
295 compositor_frame_sink_weak_factory_.GetWeakPtr()));
293 } 296 }
294 297
295 void ProxyMain::SetVisible(bool visible) { 298 void ProxyMain::SetVisible(bool visible) {
296 TRACE_EVENT1("cc", "ProxyMain::SetVisible", "visible", visible); 299 TRACE_EVENT1("cc", "ProxyMain::SetVisible", "visible", visible);
297 ImplThreadTaskRunner()->PostTask( 300 ImplThreadTaskRunner()->PostTask(
298 FROM_HERE, base::Bind(&ProxyImpl::SetVisibleOnImpl, 301 FROM_HERE, base::Bind(&ProxyImpl::SetVisibleOnImpl,
299 base::Unretained(proxy_impl_.get()), visible)); 302 base::Unretained(proxy_impl_.get()), visible));
300 } 303 }
301 304
302 void ProxyMain::SetNeedsAnimate() { 305 void ProxyMain::SetNeedsAnimate() {
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 FROM_HERE, base::Bind(&ProxyImpl::MainFrameWillHappenOnImplForTesting, 462 FROM_HERE, base::Bind(&ProxyImpl::MainFrameWillHappenOnImplForTesting,
460 base::Unretained(proxy_impl_.get()), &completion, 463 base::Unretained(proxy_impl_.get()), &completion,
461 &main_frame_will_happen)); 464 &main_frame_will_happen));
462 completion.Wait(); 465 completion.Wait();
463 } 466 }
464 return main_frame_will_happen; 467 return main_frame_will_happen;
465 } 468 }
466 469
467 void ProxyMain::ReleaseCompositorFrameSink() { 470 void ProxyMain::ReleaseCompositorFrameSink() {
468 DCHECK(IsMainThread()); 471 DCHECK(IsMainThread());
472 compositor_frame_sink_weak_factory_.InvalidateWeakPtrs();
469 DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_); 473 DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_);
470 CompletionEvent completion; 474 CompletionEvent completion;
471 ImplThreadTaskRunner()->PostTask( 475 ImplThreadTaskRunner()->PostTask(
472 FROM_HERE, base::Bind(&ProxyImpl::ReleaseCompositorFrameSinkOnImpl, 476 FROM_HERE, base::Bind(&ProxyImpl::ReleaseCompositorFrameSinkOnImpl,
473 base::Unretained(proxy_impl_.get()), &completion)); 477 base::Unretained(proxy_impl_.get()), &completion));
474 completion.Wait(); 478 completion.Wait();
475 } 479 }
476 480
477 void ProxyMain::UpdateBrowserControlsState(BrowserControlsState constraints, 481 void ProxyMain::UpdateBrowserControlsState(BrowserControlsState constraints,
478 BrowserControlsState current, 482 BrowserControlsState current,
(...skipping 26 matching lines...) Expand all
505 509
506 bool ProxyMain::IsImplThread() const { 510 bool ProxyMain::IsImplThread() const {
507 return task_runner_provider_->IsImplThread(); 511 return task_runner_provider_->IsImplThread();
508 } 512 }
509 513
510 base::SingleThreadTaskRunner* ProxyMain::ImplThreadTaskRunner() { 514 base::SingleThreadTaskRunner* ProxyMain::ImplThreadTaskRunner() {
511 return task_runner_provider_->ImplThreadTaskRunner(); 515 return task_runner_provider_->ImplThreadTaskRunner();
512 } 516 }
513 517
514 } // namespace cc 518 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698