Commit 0a7c6fb8 authored by bashi's avatar bashi Committed by Commit bot

Early return in {Suspend,Resume}Renderer() if not backgrounded

After crrev.com/2564833002, RenderThreadImpl calls SuspendRenderer() and
ResumeRenderer() unconditionally. This could cause assertion failures
when the renderer isn't backgrounded.  Rather than reverting
crrev.com/2564833002, do early return when not backgrounded because
having multiple flags to check whether a renderer is suspended doesn't
sound a good idea.

BUG=674784

Review-Url: https://codereview.chromium.org/2583083002
Cr-Commit-Position: refs/heads/master@{#439436}
parent c20eda8d
...@@ -549,9 +549,10 @@ void RendererSchedulerImpl::OnAudioStateChanged() { ...@@ -549,9 +549,10 @@ void RendererSchedulerImpl::OnAudioStateChanged() {
void RendererSchedulerImpl::SuspendRenderer() { void RendererSchedulerImpl::SuspendRenderer() {
helper_.CheckOnValidThread(); helper_.CheckOnValidThread();
DCHECK(MainThreadOnly().renderer_backgrounded);
if (helper_.IsShutdown()) if (helper_.IsShutdown())
return; return;
if (!MainThreadOnly().renderer_backgrounded)
return;
suspend_timers_when_backgrounded_closure_.Cancel(); suspend_timers_when_backgrounded_closure_.Cancel();
UMA_HISTOGRAM_COUNTS("PurgeAndSuspend.PendingTaskCount", UMA_HISTOGRAM_COUNTS("PurgeAndSuspend.PendingTaskCount",
...@@ -565,9 +566,10 @@ void RendererSchedulerImpl::SuspendRenderer() { ...@@ -565,9 +566,10 @@ void RendererSchedulerImpl::SuspendRenderer() {
void RendererSchedulerImpl::ResumeRenderer() { void RendererSchedulerImpl::ResumeRenderer() {
helper_.CheckOnValidThread(); helper_.CheckOnValidThread();
DCHECK(MainThreadOnly().renderer_backgrounded);
if (helper_.IsShutdown()) if (helper_.IsShutdown())
return; return;
if (!MainThreadOnly().renderer_backgrounded)
return;
suspend_timers_when_backgrounded_closure_.Cancel(); suspend_timers_when_backgrounded_closure_.Cancel();
MainThreadOnly().renderer_suspended = false; MainThreadOnly().renderer_suspended = false;
ResumeTimerQueueWhenForegroundedOrResumed(); ResumeTimerQueueWhenForegroundedOrResumed();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment