Index: media/mojo/clients/mojo_cdm.cc |
diff --git a/media/mojo/clients/mojo_cdm.cc b/media/mojo/clients/mojo_cdm.cc |
index 4dfcc4c7c5a10e674fb6ebdacd2dbec54e7f10f4..5ca9ad08f1c0c61996d4d406ed8dd11f8bff4187 100644 |
--- a/media/mojo/clients/mojo_cdm.cc |
+++ b/media/mojo/clients/mojo_cdm.cc |
@@ -89,8 +89,8 @@ MojoCdm::~MojoCdm() { |
base::AutoLock auto_lock(lock_); |
// Release |decryptor_| on the correct thread. If GetDecryptor() is never |
- // called but |decryptor_ptr_| is not null, it is not bound to any thread and |
- // is safe to be released on the current thread. |
+ // called but |decryptor_ptr_info_| is not null, it is not bound to any thread |
+ // and is safe to be released on the current thread. |
if (decryptor_task_runner_ && |
!decryptor_task_runner_->BelongsToCurrentThread() && decryptor_) { |
decryptor_task_runner_->DeleteSoon(FROM_HERE, decryptor_.release()); |
@@ -224,9 +224,11 @@ media::Decryptor* MojoCdm::GetDecryptor() { |
DCHECK(decryptor_task_runner_->BelongsToCurrentThread()); |
// Can be called on a different thread. |
- if (decryptor_ptr_) { |
+ if (decryptor_ptr_info_.is_valid()) { |
DCHECK(!decryptor_); |
- decryptor_.reset(new MojoDecryptor(std::move(decryptor_ptr_))); |
+ mojom::DecryptorPtr decryptor_ptr; |
+ decryptor_ptr.Bind(std::move(decryptor_ptr_info_)); |
+ decryptor_.reset(new MojoDecryptor(std::move(decryptor_ptr))); |
} |
return decryptor_.get(); |
@@ -324,7 +326,7 @@ void MojoCdm::OnCdmInitialized(mojom::CdmPromiseResultPtr result, |
base::AutoLock auto_lock(lock_); |
DCHECK_NE(CdmContext::kInvalidCdmId, cdm_id); |
cdm_id_ = cdm_id; |
- decryptor_ptr_ = std::move(decryptor); |
+ decryptor_ptr_info_ = decryptor.PassInterface(); |
} |
pending_init_promise_->resolve(); |