| Index: cc/resources/video_resource_updater.cc
|
| diff --git a/cc/resources/video_resource_updater.cc b/cc/resources/video_resource_updater.cc
|
| index 33c818c7bd9edb7c0cb8e0557c76fe3788f5934d..62007f91c67aaa10b4ddf5d2bebebce20698819c 100644
|
| --- a/cc/resources/video_resource_updater.cc
|
| +++ b/cc/resources/video_resource_updater.cc
|
| @@ -178,7 +178,8 @@ VideoResourceUpdater::VideoResourceUpdater(ContextProvider* context_provider,
|
| bool use_stream_video_draw_quad)
|
| : context_provider_(context_provider),
|
| resource_provider_(resource_provider),
|
| - use_stream_video_draw_quad_(use_stream_video_draw_quad) {}
|
| + use_stream_video_draw_quad_(use_stream_video_draw_quad),
|
| + weak_ptr_factory_(this) {}
|
|
|
| VideoResourceUpdater::~VideoResourceUpdater() {
|
| for (const PlaneResource& plane_resource : all_resources_)
|
| @@ -421,8 +422,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
|
| if (software_compositor) {
|
| external_resources.software_resources.push_back(
|
| plane_resource.resource_id());
|
| - external_resources.software_release_callback = base::Bind(
|
| - &RecycleResource, AsWeakPtr(), plane_resource.resource_id());
|
| + external_resources.software_release_callback =
|
| + base::Bind(&RecycleResource, weak_ptr_factory_.GetWeakPtr(),
|
| + plane_resource.resource_id());
|
| external_resources.type = VideoFrameExternalResources::SOFTWARE_RESOURCE;
|
| } else {
|
| // VideoResourceUpdater shares a context with the compositor so
|
| @@ -432,8 +434,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
|
| plane_resource.resource_id()));
|
| mailbox.set_color_space(output_color_space);
|
| external_resources.mailboxes.push_back(mailbox);
|
| - external_resources.release_callbacks.push_back(base::Bind(
|
| - &RecycleResource, AsWeakPtr(), plane_resource.resource_id()));
|
| + external_resources.release_callbacks.push_back(
|
| + base::Bind(&RecycleResource, weak_ptr_factory_.GetWeakPtr(),
|
| + plane_resource.resource_id()));
|
| external_resources.type = VideoFrameExternalResources::RGBA_RESOURCE;
|
| }
|
| return external_resources;
|
| @@ -535,8 +538,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
|
| plane_resource.resource_id()));
|
| mailbox.set_color_space(output_color_space);
|
| external_resources.mailboxes.push_back(mailbox);
|
| - external_resources.release_callbacks.push_back(base::Bind(
|
| - &RecycleResource, AsWeakPtr(), plane_resource.resource_id()));
|
| + external_resources.release_callbacks.push_back(
|
| + base::Bind(&RecycleResource, weak_ptr_factory_.GetWeakPtr(),
|
| + plane_resource.resource_id()));
|
| }
|
|
|
| external_resources.type = VideoFrameExternalResources::YUV_RESOURCE;
|
| @@ -612,7 +616,8 @@ void VideoResourceUpdater::CopyPlaneTexture(
|
| external_resources->mailboxes.push_back(mailbox);
|
|
|
| external_resources->release_callbacks.push_back(
|
| - base::Bind(&RecycleResource, AsWeakPtr(), resource->resource_id()));
|
| + base::Bind(&RecycleResource, weak_ptr_factory_.GetWeakPtr(),
|
| + resource->resource_id()));
|
| }
|
|
|
| VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes(
|
| @@ -664,8 +669,8 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes(
|
| media::VideoFrameMetadata::WANTS_PROMOTION_HINT));
|
| #endif
|
| external_resources.mailboxes.push_back(mailbox);
|
| - external_resources.release_callbacks.push_back(
|
| - base::Bind(&ReturnTexture, AsWeakPtr(), video_frame));
|
| + external_resources.release_callbacks.push_back(base::Bind(
|
| + &ReturnTexture, weak_ptr_factory_.GetWeakPtr(), video_frame));
|
| }
|
| }
|
| return external_resources;
|
|
|