Commit c5000adc authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Use DEFINE_THREAD_SAFE_STATIC_LOCAL @WebAudioInputIPCFactory::get()

... as per section 2.1.2 in [1].

Method is also renamed to GetInstance().

[1] https://docs.google.com/document/d/19Zk6Fv1E-6QTQ2c33rpBjDNEkzlsSKvjb3hWkvZAE80

BUG=787252
R=guidou@chromim.org, haraken@chromium.org

Change-Id: I5a80ee2168d8b150439559ce74e9ce3fd6089b07
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2391005
Commit-Queue: Antonio Gomes (GMT-4) <tonikitoo@igalia.com>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804551}
parent dc7770f2
...@@ -181,8 +181,8 @@ AudioDeviceFactory::NewAudioCapturerSource( ...@@ -181,8 +181,8 @@ AudioDeviceFactory::NewAudioCapturerSource(
} }
return base::MakeRefCounted<media::AudioInputDevice>( return base::MakeRefCounted<media::AudioInputDevice>(
blink::WebAudioInputIPCFactory::get()->CreateAudioInputIPC(frame_token, blink::WebAudioInputIPCFactory::GetInstance().CreateAudioInputIPC(
params), frame_token, params),
media::AudioInputDevice::Purpose::kUserInput, media::AudioInputDevice::Purpose::kUserInput,
media::AudioInputDevice::DeadStreamDetection::kEnabled); media::AudioInputDevice::DeadStreamDetection::kEnabled);
} }
......
...@@ -173,7 +173,7 @@ void PepperPlatformAudioInput::InitializeOnIOThread( ...@@ -173,7 +173,7 @@ void PepperPlatformAudioInput::InitializeOnIOThread(
DCHECK(io_task_runner_->BelongsToCurrentThread()); DCHECK(io_task_runner_->BelongsToCurrentThread());
if (ipc_startup_state_ != kStopped) if (ipc_startup_state_ != kStopped)
ipc_ = blink::WebAudioInputIPCFactory::get()->CreateAudioInputIPC( ipc_ = blink::WebAudioInputIPCFactory::GetInstance().CreateAudioInputIPC(
render_frame_token_, media::AudioSourceParameters(session_id)); render_frame_token_, media::AudioSourceParameters(session_id));
if (!ipc_) if (!ipc_)
return; return;
......
...@@ -625,8 +625,6 @@ void RenderThreadImpl::Init() { ...@@ -625,8 +625,6 @@ void RenderThreadImpl::Init() {
unfreezable_message_filter_ = new UnfreezableMessageFilter(this); unfreezable_message_filter_ = new UnfreezableMessageFilter(this);
AddFilter(unfreezable_message_filter_.get()); AddFilter(unfreezable_message_filter_.get());
audio_input_ipc_factory_.emplace(main_thread_runner(), GetIOTaskRunner());
audio_output_ipc_factory_.emplace(GetIOTaskRunner()); audio_output_ipc_factory_.emplace(GetIOTaskRunner());
GetContentClient()->renderer()->RenderThreadStarted(); GetContentClient()->renderer()->RenderThreadStarted();
......
...@@ -61,7 +61,6 @@ ...@@ -61,7 +61,6 @@
#include "third_party/blink/public/platform/scheduler/web_rail_mode_observer.h" #include "third_party/blink/public/platform/scheduler/web_rail_mode_observer.h"
#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h" #include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
#include "third_party/blink/public/platform/web_connection_type.h" #include "third_party/blink/public/platform/web_connection_type.h"
#include "third_party/blink/public/web/modules/media/audio/web_audio_input_ipc_factory.h"
#include "third_party/blink/public/web/modules/media/audio/web_audio_output_ipc_factory.h" #include "third_party/blink/public/web/modules/media/audio/web_audio_output_ipc_factory.h"
#include "third_party/blink/public/web/web_memory_statistics.h" #include "third_party/blink/public/web/web_memory_statistics.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
...@@ -531,9 +530,6 @@ class CONTENT_EXPORT RenderThreadImpl ...@@ -531,9 +530,6 @@ class CONTENT_EXPORT RenderThreadImpl
// Filter out unfreezable messages and pass it to unfreezable task runners. // Filter out unfreezable messages and pass it to unfreezable task runners.
scoped_refptr<UnfreezableMessageFilter> unfreezable_message_filter_; scoped_refptr<UnfreezableMessageFilter> unfreezable_message_filter_;
// Provides AudioInputIPC objects for audio input devices. Initialized in
// Init.
base::Optional<blink::WebAudioInputIPCFactory> audio_input_ipc_factory_;
// Provides AudioOutputIPC objects for audio output devices. Initialized in // Provides AudioOutputIPC objects for audio output devices. Initialized in
// Init. // Init.
base::Optional<blink::WebAudioOutputIPCFactory> audio_output_ipc_factory_; base::Optional<blink::WebAudioOutputIPCFactory> audio_output_ipc_factory_;
......
...@@ -29,13 +29,9 @@ class BLINK_MODULES_EXPORT WebAudioInputIPCFactory { ...@@ -29,13 +29,9 @@ class BLINK_MODULES_EXPORT WebAudioInputIPCFactory {
WebAudioInputIPCFactory( WebAudioInputIPCFactory(
scoped_refptr<base::SequencedTaskRunner> main_task_runner, scoped_refptr<base::SequencedTaskRunner> main_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner); scoped_refptr<base::SingleThreadTaskRunner> io_task_runner);
~WebAudioInputIPCFactory(); ~WebAudioInputIPCFactory();
static WebAudioInputIPCFactory* get() { static WebAudioInputIPCFactory& GetInstance();
DCHECK(instance_);
return instance_;
}
const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner() const { const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner() const {
return io_task_runner_; return io_task_runner_;
...@@ -50,9 +46,6 @@ class BLINK_MODULES_EXPORT WebAudioInputIPCFactory { ...@@ -50,9 +46,6 @@ class BLINK_MODULES_EXPORT WebAudioInputIPCFactory {
const scoped_refptr<base::SequencedTaskRunner> main_task_runner_; const scoped_refptr<base::SequencedTaskRunner> main_task_runner_;
const scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; const scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
// Global instance, set in constructor and unset in destructor.
static WebAudioInputIPCFactory* instance_;
DISALLOW_COPY_AND_ASSIGN(WebAudioInputIPCFactory); DISALLOW_COPY_AND_ASSIGN(WebAudioInputIPCFactory);
}; };
......
...@@ -15,9 +15,12 @@ ...@@ -15,9 +15,12 @@
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/pending_remote.h"
#include "third_party/blink/public/mojom/media/renderer_audio_input_stream_factory.mojom-blink.h" #include "third_party/blink/public/mojom/media/renderer_audio_input_stream_factory.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/public/web/web_local_frame_client.h" #include "third_party/blink/public/web/web_local_frame_client.h"
#include "third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.h" #include "third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
namespace blink { namespace blink {
...@@ -75,21 +78,20 @@ void AssociateInputAndOutputForAec( ...@@ -75,21 +78,20 @@ void AssociateInputAndOutputForAec(
} }
} // namespace } // namespace
WebAudioInputIPCFactory* WebAudioInputIPCFactory::instance_ = nullptr; WebAudioInputIPCFactory& WebAudioInputIPCFactory::GetInstance() {
DEFINE_THREAD_SAFE_STATIC_LOCAL(WebAudioInputIPCFactory, instance,
(Thread::MainThread()->GetTaskRunner(),
Platform::Current()->GetIOTaskRunner()));
return instance;
}
WebAudioInputIPCFactory::WebAudioInputIPCFactory( WebAudioInputIPCFactory::WebAudioInputIPCFactory(
scoped_refptr<base::SequencedTaskRunner> main_task_runner, scoped_refptr<base::SequencedTaskRunner> main_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
: main_task_runner_(std::move(main_task_runner)), : main_task_runner_(std::move(main_task_runner)),
io_task_runner_(std::move(io_task_runner)) { io_task_runner_(std::move(io_task_runner)) {}
DCHECK(!instance_);
instance_ = this;
}
WebAudioInputIPCFactory::~WebAudioInputIPCFactory() { WebAudioInputIPCFactory::~WebAudioInputIPCFactory() = default;
DCHECK_EQ(instance_, this);
instance_ = nullptr;
}
std::unique_ptr<media::AudioInputIPC> std::unique_ptr<media::AudioInputIPC>
WebAudioInputIPCFactory::CreateAudioInputIPC( WebAudioInputIPCFactory::CreateAudioInputIPC(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment