summaryrefslogtreecommitdiff
path: root/chromium/media/renderers/default_decoder_factory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/renderers/default_decoder_factory.cc')
-rw-r--r--chromium/media/renderers/default_decoder_factory.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/chromium/media/renderers/default_decoder_factory.cc b/chromium/media/renderers/default_decoder_factory.cc
index 755b06c9c0c..394a64b6f58 100644
--- a/chromium/media/renderers/default_decoder_factory.cc
+++ b/chromium/media/renderers/default_decoder_factory.cc
@@ -57,6 +57,10 @@ void DefaultDecoderFactory::CreateAudioDecoders(
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
MediaLog* media_log,
std::vector<std::unique_ptr<AudioDecoder>>* audio_decoders) {
+ base::AutoLock auto_lock(shutdown_lock_);
+ if (is_shutdown_)
+ return;
+
#if !defined(OS_ANDROID)
// DecryptingAudioDecoder is only needed in External Clear Key testing to
// cover the audio decrypt-and-decode path.
@@ -84,6 +88,10 @@ void DefaultDecoderFactory::CreateVideoDecoders(
const RequestOverlayInfoCB& request_overlay_info_cb,
const gfx::ColorSpace& target_color_space,
std::vector<std::unique_ptr<VideoDecoder>>* video_decoders) {
+ base::AutoLock auto_lock(shutdown_lock_);
+ if (is_shutdown_)
+ return;
+
#if !defined(OS_ANDROID)
video_decoders->push_back(
std::make_unique<DecryptingVideoDecoder>(task_runner, media_log));
@@ -123,4 +131,10 @@ void DefaultDecoderFactory::CreateVideoDecoders(
#endif
}
+void DefaultDecoderFactory::Shutdown() {
+ base::AutoLock auto_lock(shutdown_lock_);
+ external_decoder_factory_.reset();
+ is_shutdown_ = true;
+}
+
} // namespace media