| Index: media/mojo/clients/mojo_cdm.cc
|
| diff --git a/media/mojo/clients/mojo_cdm.cc b/media/mojo/clients/mojo_cdm.cc
|
| index f97d3905307b050fe153366866a3f1ad58bed18f..6674f81a2a2536e1f5dc40429218e88f6a059b79 100644
|
| --- a/media/mojo/clients/mojo_cdm.cc
|
| +++ b/media/mojo/clients/mojo_cdm.cc
|
| @@ -84,8 +84,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());
|
| @@ -219,9 +219,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();
|
| @@ -306,7 +308,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();
|
|
|