Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: media/audio/audio_manager.cc

Issue 2077983003: Intiialize AudioManager and related class lazily (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix MediaSessionTest Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/audio/audio_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/audio/audio_manager.h" 5 #include "media/audio/audio_manager.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 io_task_running_ = audio_task_running_ = true; 71 io_task_running_ = audio_task_running_ = true;
72 audio_task_runner_->PostTask( 72 audio_task_runner_->PostTask(
73 FROM_HERE, 73 FROM_HERE,
74 base::Bind(&AudioManagerHelper::UpdateLastAudioThreadTimeTick, 74 base::Bind(&AudioManagerHelper::UpdateLastAudioThreadTimeTick,
75 base::Unretained(this))); 75 base::Unretained(this)));
76 monitor_task_runner_->PostTask( 76 monitor_task_runner_->PostTask(
77 FROM_HERE, base::Bind(&AudioManagerHelper::RecordAudioThreadStatus, 77 FROM_HERE, base::Bind(&AudioManagerHelper::RecordAudioThreadStatus,
78 base::Unretained(this))); 78 base::Unretained(this)));
79 } 79 }
80 80
81 base::SingleThreadTaskRunner* monitor_task_runner() const {
82 return monitor_task_runner_.get();
83 }
81 AudioLogFactory* fake_log_factory() { return &fake_log_factory_; } 84 AudioLogFactory* fake_log_factory() { return &fake_log_factory_; }
82 85
83 #if defined(OS_WIN) 86 #if defined(OS_WIN)
84 // This should be called before creating an AudioManager in tests to ensure 87 // This should be called before creating an AudioManager in tests to ensure
85 // that the creating thread is COM initialized. 88 // that the creating thread is COM initialized.
86 void InitializeCOMForTesting() { 89 void InitializeCOMForTesting() {
87 com_initializer_for_testing_.reset(new base::win::ScopedCOMInitializer()); 90 com_initializer_for_testing_.reset(new base::win::ScopedCOMInitializer());
88 } 91 }
89 #endif 92 #endif
90 93
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 ScopedAudioManagerPtr AudioManager::CreateForTesting( 323 ScopedAudioManagerPtr AudioManager::CreateForTesting(
321 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { 324 scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
322 #if defined(OS_WIN) 325 #if defined(OS_WIN)
323 g_helper.Pointer()->InitializeCOMForTesting(); 326 g_helper.Pointer()->InitializeCOMForTesting();
324 #endif 327 #endif
325 return Create(task_runner, task_runner, 328 return Create(task_runner, task_runner,
326 g_helper.Pointer()->fake_log_factory()); 329 g_helper.Pointer()->fake_log_factory());
327 } 330 }
328 331
329 // static 332 // static
330 void AudioManager::StartHangMonitor( 333 void AudioManager::StartHangMonitorIfNeeded(
331 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { 334 scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
335 if (g_helper.Pointer()->monitor_task_runner())
336 return;
337
332 DCHECK(AudioManager::Get()); 338 DCHECK(AudioManager::Get());
333 DCHECK(task_runner); 339 DCHECK(task_runner);
334 DCHECK_NE(task_runner, AudioManager::Get()->GetTaskRunner()); 340 DCHECK_NE(task_runner, AudioManager::Get()->GetTaskRunner());
335 341
336 g_helper.Pointer()->StartHangTimer(std::move(task_runner)); 342 g_helper.Pointer()->StartHangTimer(std::move(task_runner));
337 } 343 }
338 344
339 // static 345 // static
340 void AudioManager::EnableCrashKeyLoggingForAudioThreadHangs() { 346 void AudioManager::EnableCrashKeyLoggingForAudioThreadHangs() {
341 CHECK(!g_last_created); 347 CHECK(!g_last_created);
(...skipping 11 matching lines...) Expand all
353 return g_helper.Pointer()->app_name(); 359 return g_helper.Pointer()->app_name();
354 } 360 }
355 #endif 361 #endif
356 362
357 // static 363 // static
358 AudioManager* AudioManager::Get() { 364 AudioManager* AudioManager::Get() {
359 return g_last_created; 365 return g_last_created;
360 } 366 }
361 367
362 } // namespace media 368 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/audio_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698