Index: components/mus/gles2/command_buffer_driver.cc |
diff --git a/components/mus/gles2/command_buffer_driver.cc b/components/mus/gles2/command_buffer_driver.cc |
index 798bb564f80bd52822834114aa8ed97f8b10647c..64244d8bfc893ce52f6129d13cfdb08ec947adbe 100644 |
--- a/components/mus/gles2/command_buffer_driver.cc |
+++ b/components/mus/gles2/command_buffer_driver.cc |
@@ -153,6 +153,10 @@ bool CommandBufferDriver::Initialize( |
&CommandBufferDriver::OnFenceSyncRelease, base::Unretained(this))); |
decoder_->SetWaitFenceSyncCallback(base::Bind( |
&CommandBufferDriver::OnWaitFenceSync, base::Unretained(this))); |
+ decoder_->SetDescheduleUntilFinishedCallback(base::Bind( |
+ &CommandBufferDriver::OnDescheduleUntilFinished, base::Unretained(this))); |
+ decoder_->SetRescheduleAfterFinishedCallback(base::Bind( |
+ &CommandBufferDriver::OnRescheduleAfterFinished, base::Unretained(this))); |
gpu::gles2::DisallowedFeatures disallowed_features; |
@@ -516,6 +520,21 @@ bool CommandBufferDriver::OnWaitFenceSync( |
return executor_->scheduled(); |
} |
+void CommandBufferDriver::OnDescheduleUntilFinished() { |
+ DCHECK(CalledOnValidThread()); |
+ DCHECK(IsScheduled()); |
+ DCHECK(executor_->HasMoreIdleWork()); |
+ |
+ executor_->SetScheduled(false); |
+} |
+ |
+void CommandBufferDriver::OnRescheduleAfterFinished() { |
+ DCHECK(CalledOnValidThread()); |
+ DCHECK(!executor_->scheduled()); |
+ |
+ executor_->SetScheduled(true); |
+} |
+ |
void CommandBufferDriver::OnParseError() { |
DCHECK(CalledOnValidThread()); |
gpu::CommandBuffer::State state = GetLastState(); |