Index: content/browser/renderer_host/render_process_host_impl.cc |
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
index 6b7b72e7c49dfff21aff9563cb85652a2926a20a..09422875e0addd1bd5a6e6ac3c8248ab5efd181d 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -102,6 +102,7 @@ |
#include "content/browser/renderer_host/file_utilities_message_filter.h" |
#include "content/browser/renderer_host/media/audio_input_renderer_host.h" |
#include "content/browser/renderer_host/media/audio_renderer_host.h" |
+#include "content/browser/renderer_host/media/audio_stream_registry_impl.h" |
#include "content/browser/renderer_host/media/media_stream_dispatcher_host.h" |
#include "content/browser/renderer_host/media/peer_connection_tracker_host.h" |
#include "content/browser/renderer_host/media/video_capture_host.h" |
@@ -680,6 +681,7 @@ RenderProcessHostImpl::RenderProcessHostImpl( |
gpu_observer_registered_(false), |
delayed_cleanup_needed_(false), |
within_process_died_observer_(false), |
+ audio_stream_registry_(AudioStreamRegistryImpl::Create(id_)), |
#if BUILDFLAG(ENABLE_WEBRTC) |
webrtc_eventlog_host_(id_), |
#endif |
@@ -1072,8 +1074,8 @@ void RenderProcessHostImpl::CreateMessageFilters() { |
BrowserMainLoop::GetInstance()->user_input_monitor()); |
AddFilter(audio_input_renderer_host_.get()); |
audio_renderer_host_ = new AudioRendererHost( |
- GetID(), audio_manager, AudioMirroringManager::GetInstance(), |
- media_stream_manager, |
+ GetID(), audio_stream_registry_.get(), audio_manager, |
+ AudioMirroringManager::GetInstance(), media_stream_manager, |
browser_context->GetResourceContext()->GetMediaDeviceIDSalt()); |
AddFilter(audio_renderer_host_.get()); |
AddFilter( |
@@ -2267,6 +2269,16 @@ void RenderProcessHostImpl::EnableAudioDebugRecordings( |
base::Bind(&AudioInputRendererHost::EnableDebugRecording, |
audio_input_renderer_host_, file)); |
} |
+ |
+ if (audio_stream_registry_) { |
o1ka
2016/12/22 10:46:52
We should not have two approaches side by side, sh
Max Morin
2017/01/09 15:34:23
Right, null check is not actually necessary.
|
+ // |audio_stream_registry_| is deleted on the IO thread and if |this| is |
+ // alive now it means that the task to delete |audio_stream_registry_| |
o1ka
2016/12/22 10:46:52
Could you clarify in the comment how one follows f
Max Morin
2017/01/09 15:34:23
Done.
|
+ // isn't posted yet, so unretained is safe. |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, |
+ base::Bind(&AudioStreamRegistryImpl::EnableDebugRecording, |
+ base::Unretained(audio_stream_registry_.get()), file)); |
+ } |
} |
void RenderProcessHostImpl::DisableAudioDebugRecordings() { |
@@ -2780,7 +2792,7 @@ void RenderProcessHostImpl::UpdateProcessPriority() { |
// visible widgets -- the callers must call this function whenever we |
// transition in/out of those states. |
const bool should_background = |
- visible_widgets_ == 0 && !audio_renderer_host_->HasActiveAudio() && |
+ visible_widgets_ == 0 && !audio_stream_registry_->HasActiveAudio() && |
!base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kDisableRendererBackgrounding); |