Index: gpu/command_buffer/service/gpu_scheduler.cc |
diff --git a/gpu/command_buffer/service/gpu_scheduler.cc b/gpu/command_buffer/service/gpu_scheduler.cc |
index 78739dca5fcf9b0899c97e2aeb15b59ec0cdc6bd..61bdcf8470e652631741885edcef724f8f94fb81 100644 |
--- a/gpu/command_buffer/service/gpu_scheduler.cc |
+++ b/gpu/command_buffer/service/gpu_scheduler.cc |
@@ -136,11 +136,12 @@ void GpuScheduler::SetScheduled(bool scheduled) { |
// state, cancel the task that would reschedule it after a timeout. |
reschedule_task_factory_.InvalidateWeakPtrs(); |
- if (!scheduled_callback_.is_null()) |
- scheduled_callback_.Run(); |
+ if (!scheduling_changed_callback_.is_null()) |
+ scheduling_changed_callback_.Run(true); |
} |
} else { |
- if (unscheduled_count_ == 0) { |
+ ++unscheduled_count_; |
+ if (unscheduled_count_ == 1) { |
TRACE_EVENT_ASYNC_BEGIN1("gpu", "ProcessingSwap", this, |
"GpuScheduler", this); |
#if defined(OS_WIN) |
@@ -155,9 +156,9 @@ void GpuScheduler::SetScheduled(bool scheduled) { |
base::TimeDelta::FromMilliseconds(kRescheduleTimeOutDelay)); |
} |
#endif |
+ if (!scheduling_changed_callback_.is_null()) |
+ scheduling_changed_callback_.Run(false); |
} |
- |
- ++unscheduled_count_; |
} |
} |
@@ -170,9 +171,9 @@ bool GpuScheduler::HasMoreWork() { |
(decoder_ && decoder_->ProcessPendingQueries()); |
} |
-void GpuScheduler::SetScheduledCallback( |
- const base::Closure& scheduled_callback) { |
- scheduled_callback_ = scheduled_callback; |
+void GpuScheduler::SetSchedulingChangedCallback( |
+ const SchedulingChangedCallback& callback) { |
+ scheduling_changed_callback_ = callback; |
} |
Buffer GpuScheduler::GetSharedMemoryBuffer(int32 shm_id) { |