diff options
Diffstat (limited to 'chromium/media/renderers/default_decoder_factory.cc')
-rw-r--r-- | chromium/media/renderers/default_decoder_factory.cc | 14 |
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 |