Chromium Code Reviews| Index: chrome/browser/task_manager/sampling/task_manager_impl.cc |
| diff --git a/chrome/browser/task_manager/sampling/task_manager_impl.cc b/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| index afd1ca1514b513670949f16ce3f709cb9f5e3e30..aab3f46770eaf7fd4be07856bc040329d76adf91 100644 |
| --- a/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| +++ b/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| @@ -50,7 +50,8 @@ TaskManagerImpl::TaskManagerImpl() |
| base::Unretained(this))), |
| blocking_pool_runner_(GetBlockingPoolRunner()), |
| shared_sampler_(new SharedSampler(blocking_pool_runner_)), |
| - is_running_(false) { |
| + is_running_(false), |
| + weak_ptr_factory_(this) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| task_providers_.emplace_back(new BrowserProcessTaskProvider()); |
| @@ -60,12 +61,9 @@ TaskManagerImpl::TaskManagerImpl() |
| if (arc::IsArcAvailable()) |
| task_providers_.emplace_back(new ArcProcessTaskProvider()); |
| #endif // defined(OS_CHROMEOS) |
| - |
| - content::GpuDataManager::GetInstance()->AddObserver(this); |
| } |
| TaskManagerImpl::~TaskManagerImpl() { |
| - content::GpuDataManager::GetInstance()->RemoveObserver(this); |
| } |
| // static |
| @@ -452,13 +450,6 @@ void TaskManagerImpl::TaskUnresponsive(Task* task) { |
| NotifyObserversOnTaskUnresponsive(task->task_id()); |
| } |
| -void TaskManagerImpl::OnVideoMemoryUsageStatsUpdate( |
| - const gpu::VideoMemoryUsageStats& gpu_memory_stats) { |
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| - |
| - gpu_memory_stats_ = gpu_memory_stats; |
| -} |
| - |
| // static |
| void TaskManagerImpl::OnMultipleBytesReadUI( |
| std::vector<BytesReadParam>* params) { |
| @@ -481,10 +472,18 @@ void TaskManagerImpl::OnMultipleBytesReadUI( |
| } |
| } |
| +void TaskManagerImpl::OnVideoMemoryUsageStatsUpdate( |
| + const gpu::VideoMemoryUsageStats& gpu_memory_stats) { |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
|
jbauman
2017/04/20 21:35:02
Won't this be called on the IO thread if it's run
sadrul
2017/04/21 03:41:01
Very nice. Good catch! Yes, you are right. I misse
|
| + |
| + gpu_memory_stats_ = gpu_memory_stats; |
| +} |
| + |
| void TaskManagerImpl::Refresh() { |
| if (IsResourceRefreshEnabled(REFRESH_TYPE_GPU_MEMORY)) { |
| - content::GpuDataManager::GetInstance()-> |
| - RequestVideoMemoryUsageStatsUpdate(); |
| + content::GpuDataManager::GetInstance()->RequestVideoMemoryUsageStatsUpdate( |
| + base::Bind(&TaskManagerImpl::OnVideoMemoryUsageStatsUpdate, |
| + weak_ptr_factory_.GetWeakPtr())); |
| } |
| for (auto& groups_itr : task_groups_by_proc_id_) { |