OLD | NEW |
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 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 | 542 |
543 MainThreadOnly().last_audio_state_change = | 543 MainThreadOnly().last_audio_state_change = |
544 helper_.scheduler_tqm_delegate()->NowTicks(); | 544 helper_.scheduler_tqm_delegate()->NowTicks(); |
545 MainThreadOnly().is_audio_playing = is_audio_playing; | 545 MainThreadOnly().is_audio_playing = is_audio_playing; |
546 | 546 |
547 UpdatePolicy(); | 547 UpdatePolicy(); |
548 } | 548 } |
549 | 549 |
550 void RendererSchedulerImpl::SuspendRenderer() { | 550 void RendererSchedulerImpl::SuspendRenderer() { |
551 helper_.CheckOnValidThread(); | 551 helper_.CheckOnValidThread(); |
552 DCHECK(MainThreadOnly().renderer_backgrounded); | |
553 if (helper_.IsShutdown()) | 552 if (helper_.IsShutdown()) |
554 return; | 553 return; |
| 554 if (!MainThreadOnly().renderer_backgrounded) |
| 555 return; |
555 suspend_timers_when_backgrounded_closure_.Cancel(); | 556 suspend_timers_when_backgrounded_closure_.Cancel(); |
556 | 557 |
557 UMA_HISTOGRAM_COUNTS("PurgeAndSuspend.PendingTaskCount", | 558 UMA_HISTOGRAM_COUNTS("PurgeAndSuspend.PendingTaskCount", |
558 helper_.GetNumberOfPendingTasks()); | 559 helper_.GetNumberOfPendingTasks()); |
559 | 560 |
560 // TODO(hajimehoshi): We might need to suspend not only timer queue but also | 561 // TODO(hajimehoshi): We might need to suspend not only timer queue but also |
561 // e.g. loading tasks or postMessage. | 562 // e.g. loading tasks or postMessage. |
562 MainThreadOnly().renderer_suspended = true; | 563 MainThreadOnly().renderer_suspended = true; |
563 SuspendTimerQueueWhenBackgrounded(); | 564 SuspendTimerQueueWhenBackgrounded(); |
564 } | 565 } |
565 | 566 |
566 void RendererSchedulerImpl::ResumeRenderer() { | 567 void RendererSchedulerImpl::ResumeRenderer() { |
567 helper_.CheckOnValidThread(); | 568 helper_.CheckOnValidThread(); |
568 DCHECK(MainThreadOnly().renderer_backgrounded); | |
569 if (helper_.IsShutdown()) | 569 if (helper_.IsShutdown()) |
570 return; | 570 return; |
| 571 if (!MainThreadOnly().renderer_backgrounded) |
| 572 return; |
571 suspend_timers_when_backgrounded_closure_.Cancel(); | 573 suspend_timers_when_backgrounded_closure_.Cancel(); |
572 MainThreadOnly().renderer_suspended = false; | 574 MainThreadOnly().renderer_suspended = false; |
573 ResumeTimerQueueWhenForegroundedOrResumed(); | 575 ResumeTimerQueueWhenForegroundedOrResumed(); |
574 } | 576 } |
575 | 577 |
576 void RendererSchedulerImpl::EndIdlePeriod() { | 578 void RendererSchedulerImpl::EndIdlePeriod() { |
577 if (MainThreadOnly().in_idle_period_for_testing) | 579 if (MainThreadOnly().in_idle_period_for_testing) |
578 return; | 580 return; |
579 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), | 581 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
580 "RendererSchedulerImpl::EndIdlePeriod"); | 582 "RendererSchedulerImpl::EndIdlePeriod"); |
(...skipping 1288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1869 case TimeDomainType::VIRTUAL: | 1871 case TimeDomainType::VIRTUAL: |
1870 return "virtual"; | 1872 return "virtual"; |
1871 default: | 1873 default: |
1872 NOTREACHED(); | 1874 NOTREACHED(); |
1873 return nullptr; | 1875 return nullptr; |
1874 } | 1876 } |
1875 } | 1877 } |
1876 | 1878 |
1877 } // namespace scheduler | 1879 } // namespace scheduler |
1878 } // namespace blink | 1880 } // namespace blink |
OLD | NEW |