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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc

Issue 2753843003: Create a new action triggered when a BeginMainFrame is not expected before vsync (Closed)
Patch Set: missed one Created 3 years, 9 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 "platform/scheduler/renderer/renderer_scheduler_impl.h" 5 #include "platform/scheduler/renderer/renderer_scheduler_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/stack_trace.h" 8 #include "base/debug/stack_trace.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 return; 445 return;
446 446
447 MainThreadOnly().begin_frame_not_expected_soon = true; 447 MainThreadOnly().begin_frame_not_expected_soon = true;
448 idle_helper_.EnableLongIdlePeriod(); 448 idle_helper_.EnableLongIdlePeriod();
449 { 449 {
450 base::AutoLock lock(any_thread_lock_); 450 base::AutoLock lock(any_thread_lock_);
451 AnyThread().begin_main_frame_on_critical_path = false; 451 AnyThread().begin_main_frame_on_critical_path = false;
452 } 452 }
453 } 453 }
454 454
455 void RendererSchedulerImpl::DoShortIdleWork(const cc::BeginFrameArgs& args) {
456 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
457 "RendererSchedulerImpl::DoShortIdleWork");
458 helper_.CheckOnValidThread();
459 if (helper_.IsShutdown())
460 return;
461
462 base::TimeTicks now(helper_.scheduler_tqm_delegate()->NowTicks());
463 base::TimeTicks estimated_next_frame_begin = args.frame_time + args.interval;
464
465 if (now < estimated_next_frame_begin) {
466 // TODO(rmcilroy): Consider reducing the idle period based on the runtime of
467 // the next pending delayed tasks (as currently done in for long idle times)
468 idle_helper_.StartIdlePeriod(
469 IdleHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, now,
470 estimated_next_frame_begin);
471 }
472 }
473
455 void RendererSchedulerImpl::SetAllRenderWidgetsHidden(bool hidden) { 474 void RendererSchedulerImpl::SetAllRenderWidgetsHidden(bool hidden) {
456 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), 475 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
457 "RendererSchedulerImpl::SetAllRenderWidgetsHidden", "hidden", 476 "RendererSchedulerImpl::SetAllRenderWidgetsHidden", "hidden",
458 hidden); 477 hidden);
459 478
460 helper_.CheckOnValidThread(); 479 helper_.CheckOnValidThread();
461 480
462 if (helper_.IsShutdown() || MainThreadOnly().renderer_hidden == hidden) 481 if (helper_.IsShutdown() || MainThreadOnly().renderer_hidden == hidden)
463 return; 482 return;
464 483
(...skipping 1450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1915 case TimeDomainType::VIRTUAL: 1934 case TimeDomainType::VIRTUAL:
1916 return "virtual"; 1935 return "virtual";
1917 default: 1936 default:
1918 NOTREACHED(); 1937 NOTREACHED();
1919 return nullptr; 1938 return nullptr;
1920 } 1939 }
1921 } 1940 }
1922 1941
1923 } // namespace scheduler 1942 } // namespace scheduler
1924 } // namespace blink 1943 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698