Index: components/scheduler/base/time_domain.cc |
diff --git a/components/scheduler/base/time_domain.cc b/components/scheduler/base/time_domain.cc |
index 0e3144cdc750c716dbb8ec26ed2e012fa7663b18..d39e3cb71ca583027044dc5f68b7c1842461af2a 100644 |
--- a/components/scheduler/base/time_domain.cc |
+++ b/components/scheduler/base/time_domain.cc |
@@ -47,7 +47,11 @@ void TimeDomain::MigrateQueue(internal::TaskQueueImpl* queue, |
DCHECK(main_thread_checker_.CalledOnValidThread()); |
DCHECK_EQ(queue->GetTimeDomain(), this); |
DCHECK(destination_time_domain); |
- UnregisterAsUpdatableTaskQueue(queue); |
+ |
+ // Make sure we remember to update |queue| if it's got incomming immediate |
Sami
2016/07/27 09:57:56
s/incomming/incoming/
alex clarke (OOO till 29th)
2016/07/27 10:14:56
Done.
|
+ // work. |
+ if (UnregisterAsUpdatableTaskQueue(queue)) |
+ destination_time_domain->updatable_queue_set_.insert(queue); |
base::TimeTicks destination_now = destination_time_domain->Now(); |
// We need to remove |task_queue| from delayed_wakeup_multimap_ which is a |
@@ -89,11 +93,11 @@ void TimeDomain::RegisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue) { |
observer_->OnTimeDomainHasImmediateWork(); |
} |
-void TimeDomain::UnregisterAsUpdatableTaskQueue( |
+bool TimeDomain::UnregisterAsUpdatableTaskQueue( |
internal::TaskQueueImpl* queue) { |
DCHECK(main_thread_checker_.CalledOnValidThread()); |
- updatable_queue_set_.erase(queue); |
+ bool was_updatable = updatable_queue_set_.erase(queue) != 0; |
base::AutoLock lock(newly_updatable_lock_); |
// Remove all copies of |queue| from |newly_updatable_|. |
@@ -102,10 +106,12 @@ void TimeDomain::UnregisterAsUpdatableTaskQueue( |
// Move last element into slot #i and then compact. |
newly_updatable_[i] = newly_updatable_.back(); |
newly_updatable_.pop_back(); |
+ was_updatable = true; |
} else { |
i++; |
} |
} |
+ return was_updatable; |
} |
void TimeDomain::UpdateWorkQueues( |