Index: chromecast/media/cma/base/balanced_media_task_runner_factory.cc |
diff --git a/chromecast/media/cma/base/balanced_media_task_runner_factory.cc b/chromecast/media/cma/base/balanced_media_task_runner_factory.cc |
index f365534e457e0375302bc83eef001e47c70c289e..3aba0730afee405e1bcd1c0854965556e842b190 100644 |
--- a/chromecast/media/cma/base/balanced_media_task_runner_factory.cc |
+++ b/chromecast/media/cma/base/balanced_media_task_runner_factory.cc |
@@ -244,8 +244,14 @@ void BalancedMediaTaskRunnerFactory::OnNewTask() { |
void BalancedMediaTaskRunnerFactory::UnregisterMediaTaskRunner( |
const scoped_refptr<BalancedMediaTaskRunner>& media_task_runner) { |
- base::AutoLock auto_lock(lock_); |
- task_runners_.erase(media_task_runner); |
+ { |
+ base::AutoLock auto_lock(lock_); |
+ task_runners_.erase(media_task_runner); |
+ } |
+ // After removing one of the task runners some of the other task runners might |
+ // need to be waken up, if they are no longer blocked by the balancing |
+ // restrictions with the old stream. |
+ OnNewTask(); |
} |
} // namespace media |