| 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();
|
|
|