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(
}
return base::MakeRefCounted<media::AudioInputDevice>(
blink::WebAudioInputIPCFactory::get()->CreateAudioInputIPC(frame_token,
params),
blink::WebAudioInputIPCFactory::GetInstance().CreateAudioInputIPC(
frame_token, params),
media::AudioInputDevice::Purpose::kUserInput,
media::AudioInputDevice::DeadStreamDetection::kEnabled);
}
......
......@@ -173,7 +173,7 @@ void PepperPlatformAudioInput::InitializeOnIOThread(
DCHECK(io_task_runner_->BelongsToCurrentThread());
if (ipc_startup_state_ != kStopped)
ipc_ = blink::WebAudioInputIPCFactory::get()->CreateAudioInputIPC(
ipc_ = blink::WebAudioInputIPCFactory::GetInstance().CreateAudioInputIPC(
render_frame_token_, media::AudioSourceParameters(session_id));
if (!ipc_)
return;
......
......@@ -625,8 +625,6 @@ void RenderThreadImpl::Init() {
unfreezable_message_filter_ = new UnfreezableMessageFilter(this);
AddFilter(unfreezable_message_filter_.get());
audio_input_ipc_factory_.emplace(main_thread_runner(), GetIOTaskRunner());
audio_output_ipc_factory_.emplace(GetIOTaskRunner());
GetContentClient()->renderer()->RenderThreadStarted();
......
......@@ -61,7 +61,6 @@
#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/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/web_memory_statistics.h"
#include "ui/gfx/native_widget_types.h"
......@@ -531,9 +530,6 @@ class CONTENT_EXPORT RenderThreadImpl
// Filter out unfreezable messages and pass it to unfreezable task runners.
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
// Init.
base::Optional<blink::WebAudioOutputIPCFactory> audio_output_ipc_factory_;
......
......@@ -29,13 +29,9 @@ class BLINK_MODULES_EXPORT WebAudioInputIPCFactory {
WebAudioInputIPCFactory(
scoped_refptr<base::SequencedTaskRunner> main_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner);
~WebAudioInputIPCFactory();
static WebAudioInputIPCFactory* get() {
DCHECK(instance_);
return instance_;
}
static WebAudioInputIPCFactory& GetInstance();
const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner() const {
return io_task_runner_;
......@@ -50,9 +46,6 @@ class BLINK_MODULES_EXPORT WebAudioInputIPCFactory {
const scoped_refptr<base::SequencedTaskRunner> main_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);
};
......
......@@ -15,9 +15,12 @@
#include "mojo/public/cpp/bindings/pending_receiver.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/platform/platform.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/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 {
......@@ -75,21 +78,20 @@ void AssociateInputAndOutputForAec(
}
} // 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(
scoped_refptr<base::SequencedTaskRunner> main_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
: main_task_runner_(std::move(main_task_runner)),
io_task_runner_(std::move(io_task_runner)) {
DCHECK(!instance_);
instance_ = this;
}
io_task_runner_(std::move(io_task_runner)) {}
WebAudioInputIPCFactory::~WebAudioInputIPCFactory() {
DCHECK_EQ(instance_, this);
instance_ = nullptr;
}
WebAudioInputIPCFactory::~WebAudioInputIPCFactory() = default;
std::unique_ptr<media::AudioInputIPC>
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