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: Kentaro Hara <haraken@chromium.org> Reviewed-by: Guido Urdaneta <guidou@chromium.org> Cr-Commit-Position: refs/heads/master@{#804551}
This commit is contained in:

committed by
Commit Bot

parent
dc7770f245
commit
c5000adc0e
content/renderer
third_party/blink
public
web
modules
media
renderer
modules
media
@ -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(
|
||||
|
Reference in New Issue
Block a user