Index: base/task_scheduler/scheduler_single_thread_task_runner_manager.cc |
diff --git a/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc b/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc |
index 3f45500e8a6edd714084586a32d6b404e5b33de5..a445a165b23946370dd484b31d50dbb7f2f50f44 100644 |
--- a/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc |
+++ b/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc |
@@ -330,19 +330,9 @@ class SchedulerSingleThreadTaskRunnerManager::SchedulerSingleThreadTaskRunner |
SchedulerSingleThreadTaskRunnerManager::SchedulerSingleThreadTaskRunnerManager( |
TaskTracker* task_tracker, |
DelayedTaskManager* delayed_task_manager) |
- : task_tracker_(task_tracker), |
- delayed_task_manager_(delayed_task_manager), |
- shared_scheduler_workers_ {} |
-#if defined(OS_WIN) |
- , |
- shared_com_scheduler_workers_ {} |
-#endif // defined(OS_WIN) |
-{ |
+ : task_tracker_(task_tracker), delayed_task_manager_(delayed_task_manager) { |
DCHECK(task_tracker_); |
DCHECK(delayed_task_manager_); |
- static_assert( |
- arraysize(shared_scheduler_workers_) == ENVIRONMENT_COUNT, |
- "The size of |shared_scheduler_workers_| must match ENVIRONMENT_COUNT"); |
#if defined(OS_WIN) |
static_assert(arraysize(shared_com_scheduler_workers_) == |
arraysize(shared_scheduler_workers_), |
@@ -427,7 +417,8 @@ SchedulerSingleThreadTaskRunnerManager::CreateTaskRunnerWithTraitsImpl( |
DCHECK(thread_mode != SingleThreadTaskRunnerThreadMode::SHARED || |
!traits.with_base_sync_primitives()) |
<< "Using WithBaseSyncPrimitives() on a shared SingleThreadTaskRunner " |
- "may cause deadlocks. Either reevaluate your usage pattern or use " |
+ "may cause deadlocks. Either reevaluate your usage (e.g. use " |
+ "SequencedTaskRunner) or use " |
"SingleThreadTaskRunnerThreadMode::DEDICATED."; |
// To simplify the code, |dedicated_worker| is a local only variable that |
// allows the code to treat both the DEDICATED and SHARED cases similarly for |
@@ -460,7 +451,8 @@ SchedulerSingleThreadTaskRunnerManager::CreateTaskRunnerWithTraitsImpl( |
if (new_worker && started) |
worker->Start(); |
- return new SchedulerSingleThreadTaskRunner(this, traits, worker, thread_mode); |
+ return MakeRefCounted<SchedulerSingleThreadTaskRunner>(this, traits, worker, |
+ thread_mode); |
} |
void SchedulerSingleThreadTaskRunnerManager::JoinForTesting() { |
@@ -569,8 +561,10 @@ void SchedulerSingleThreadTaskRunnerManager::ReleaseSharedSchedulerWorkers() { |
AutoSchedulerLock auto_lock(lock_); |
for (size_t i = 0; i < arraysize(shared_scheduler_workers_); ++i) { |
local_shared_scheduler_workers[i] = shared_scheduler_workers_[i]; |
+ shared_scheduler_workers_[i] = nullptr; |
#if defined(OS_WIN) |
local_shared_com_scheduler_workers[i] = shared_com_scheduler_workers_[i]; |
+ shared_com_scheduler_workers_[i] = nullptr; |
#endif |
} |
} |