| Index: media/mojo/services/mojo_cdm_service.cc
|
| diff --git a/media/mojo/services/mojo_cdm_service.cc b/media/mojo/services/mojo_cdm_service.cc
|
| index 54d1e6cdead7010f1c94c62e9bd9acc6e5ec9b9d..76569fa1c06a397a23413ed738a9b40e2f1f0081 100644
|
| --- a/media/mojo/services/mojo_cdm_service.cc
|
| +++ b/media/mojo/services/mojo_cdm_service.cc
|
| @@ -8,7 +8,6 @@
|
| #include <utility>
|
|
|
| #include "base/bind.h"
|
| -#include "base/lazy_instance.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/synchronization/lock.h"
|
| @@ -26,7 +25,7 @@ namespace media {
|
| namespace {
|
|
|
| // Manages all CDMs created by MojoCdmService. Can only have one instance per
|
| -// process so use a LazyInstance to ensure this.
|
| +// process, so we use a thread-safe static to achieve this.
|
| class CdmManager {
|
| public:
|
| CdmManager() {}
|
| @@ -62,7 +61,10 @@ class CdmManager {
|
| DISALLOW_COPY_AND_ASSIGN(CdmManager);
|
| };
|
|
|
| -base::LazyInstance<CdmManager>::Leaky g_cdm_manager = LAZY_INSTANCE_INITIALIZER;
|
| +CdmManager* GetManager() {
|
| + static CdmManager* manager = new CdmManager();
|
| + return manager;
|
| +}
|
|
|
| } // namespace
|
|
|
| @@ -75,7 +77,7 @@ int MojoCdmService::next_cdm_id_ = CdmContext::kInvalidCdmId + 1;
|
| scoped_refptr<ContentDecryptionModule> MojoCdmService::LegacyGetCdm(
|
| int cdm_id) {
|
| DVLOG(1) << __func__ << ": " << cdm_id;
|
| - return g_cdm_manager.Get().GetCdm(cdm_id);
|
| + return GetManager()->GetCdm(cdm_id);
|
| }
|
|
|
| MojoCdmService::MojoCdmService(base::WeakPtr<MojoCdmServiceContext> context,
|
| @@ -92,7 +94,7 @@ MojoCdmService::~MojoCdmService() {
|
| if (cdm_id_ == CdmContext::kInvalidCdmId)
|
| return;
|
|
|
| - g_cdm_manager.Get().UnregisterCdm(cdm_id_);
|
| + GetManager()->UnregisterCdm(cdm_id_);
|
|
|
| if (context_)
|
| context_->UnregisterCdm(cdm_id_);
|
| @@ -194,7 +196,7 @@ void MojoCdmService::OnCdmCreated(
|
| cdm_id_ = next_cdm_id_++;
|
|
|
| context_->RegisterCdm(cdm_id_, this);
|
| - g_cdm_manager.Get().RegisterCdm(cdm_id_, cdm);
|
| + GetManager()->RegisterCdm(cdm_id_, cdm);
|
|
|
| // If |cdm| has a decryptor, create the MojoDecryptorService
|
| // and pass the connection back to the client.
|
|
|