| Index: ppapi/proxy/ppb_instance_proxy.cc
|
| diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc
|
| index fb71a93297d9c215dcff599c01c9a5c3bd165eb6..f1c2eccd338d71ca02c424d802c410acb45d7e0e 100644
|
| --- a/ppapi/proxy/ppb_instance_proxy.cc
|
| +++ b/ppapi/proxy/ppb_instance_proxy.cc
|
| @@ -581,10 +581,16 @@ void PPB_Instance_Proxy::DecoderResetDone(PP_Instance instance,
|
| void PPB_Instance_Proxy::DeliverFrame(PP_Instance instance,
|
| PP_Resource decrypted_frame,
|
| const PP_DecryptedFrameInfo* frame_info) {
|
| - Resource* object =
|
| - PpapiGlobals::Get()->GetResourceTracker()->GetResource(decrypted_frame);
|
| - if (!object || object->pp_instance() != instance)
|
| - return;
|
| + PP_Resource host_resource = 0;
|
| + if (decrypted_frame != 0) {
|
| + ResourceTracker* tracker = PpapiGlobals::Get()->GetResourceTracker();
|
| + Resource* object = tracker->GetResource(decrypted_frame);
|
| +
|
| + if (!object || object->pp_instance() != instance)
|
| + return;
|
| +
|
| + host_resource = object->host_resource().host_resource();
|
| + }
|
|
|
| std::string serialized_block_info;
|
| if (!SerializeBlockInfo(*frame_info, &serialized_block_info))
|
| @@ -593,7 +599,7 @@ void PPB_Instance_Proxy::DeliverFrame(PP_Instance instance,
|
| dispatcher()->Send(new PpapiHostMsg_PPBInstance_DeliverFrame(
|
| API_ID_PPB_INSTANCE,
|
| instance,
|
| - object->host_resource().host_resource(),
|
| + host_resource,
|
| serialized_block_info));
|
| }
|
|
|
| @@ -602,10 +608,16 @@ void PPB_Instance_Proxy::DeliverSamples(
|
| PP_Instance instance,
|
| PP_Resource decrypted_samples,
|
| const PP_DecryptedBlockInfo* block_info) {
|
| - Resource* object =
|
| - PpapiGlobals::Get()->GetResourceTracker()->GetResource(decrypted_samples);
|
| - if (!object || object->pp_instance() != instance)
|
| - return;
|
| + PP_Resource host_resource = 0;
|
| + if (decrypted_samples != 0) {
|
| + ResourceTracker* tracker = PpapiGlobals::Get()->GetResourceTracker();
|
| + Resource* object = tracker->GetResource(decrypted_samples);
|
| +
|
| + if (!object || object->pp_instance() != instance)
|
| + return;
|
| +
|
| + host_resource = object->host_resource().host_resource();
|
| + }
|
|
|
| std::string serialized_block_info;
|
| if (!SerializeBlockInfo(*block_info, &serialized_block_info))
|
| @@ -615,7 +627,7 @@ void PPB_Instance_Proxy::DeliverSamples(
|
| new PpapiHostMsg_PPBInstance_DeliverSamples(
|
| API_ID_PPB_INSTANCE,
|
| instance,
|
| - object->host_resource().host_resource(),
|
| + host_resource,
|
| serialized_block_info));
|
| }
|
|
|
|
|