Commit c454c56e authored by c.padhi's avatar c.padhi Committed by Commit bot

Replace SupportsWeakPtr with WeakPtrFactory in VideoResourceUpdater

VideoResourceUpdater uses weak pointers within the class only.
Hence, it does not have to inherit SupportsWeakPtr.

BUG=None
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2838713004
Cr-Commit-Position: refs/heads/master@{#467883}
parent 321b6ea1
...@@ -178,7 +178,8 @@ VideoResourceUpdater::VideoResourceUpdater(ContextProvider* context_provider, ...@@ -178,7 +178,8 @@ VideoResourceUpdater::VideoResourceUpdater(ContextProvider* context_provider,
bool use_stream_video_draw_quad) bool use_stream_video_draw_quad)
: context_provider_(context_provider), : context_provider_(context_provider),
resource_provider_(resource_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() { VideoResourceUpdater::~VideoResourceUpdater() {
for (const PlaneResource& plane_resource : all_resources_) for (const PlaneResource& plane_resource : all_resources_)
...@@ -421,8 +422,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes( ...@@ -421,8 +422,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
if (software_compositor) { if (software_compositor) {
external_resources.software_resources.push_back( external_resources.software_resources.push_back(
plane_resource.resource_id()); plane_resource.resource_id());
external_resources.software_release_callback = base::Bind( external_resources.software_release_callback =
&RecycleResource, AsWeakPtr(), plane_resource.resource_id()); base::Bind(&RecycleResource, weak_ptr_factory_.GetWeakPtr(),
plane_resource.resource_id());
external_resources.type = VideoFrameExternalResources::SOFTWARE_RESOURCE; external_resources.type = VideoFrameExternalResources::SOFTWARE_RESOURCE;
} else { } else {
// VideoResourceUpdater shares a context with the compositor so // VideoResourceUpdater shares a context with the compositor so
...@@ -432,8 +434,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes( ...@@ -432,8 +434,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
plane_resource.resource_id())); plane_resource.resource_id()));
mailbox.set_color_space(output_color_space); mailbox.set_color_space(output_color_space);
external_resources.mailboxes.push_back(mailbox); external_resources.mailboxes.push_back(mailbox);
external_resources.release_callbacks.push_back(base::Bind( external_resources.release_callbacks.push_back(
&RecycleResource, AsWeakPtr(), plane_resource.resource_id())); base::Bind(&RecycleResource, weak_ptr_factory_.GetWeakPtr(),
plane_resource.resource_id()));
external_resources.type = VideoFrameExternalResources::RGBA_RESOURCE; external_resources.type = VideoFrameExternalResources::RGBA_RESOURCE;
} }
return external_resources; return external_resources;
...@@ -535,8 +538,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes( ...@@ -535,8 +538,9 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
plane_resource.resource_id())); plane_resource.resource_id()));
mailbox.set_color_space(output_color_space); mailbox.set_color_space(output_color_space);
external_resources.mailboxes.push_back(mailbox); external_resources.mailboxes.push_back(mailbox);
external_resources.release_callbacks.push_back(base::Bind( external_resources.release_callbacks.push_back(
&RecycleResource, AsWeakPtr(), plane_resource.resource_id())); base::Bind(&RecycleResource, weak_ptr_factory_.GetWeakPtr(),
plane_resource.resource_id()));
} }
external_resources.type = VideoFrameExternalResources::YUV_RESOURCE; external_resources.type = VideoFrameExternalResources::YUV_RESOURCE;
...@@ -612,7 +616,8 @@ void VideoResourceUpdater::CopyPlaneTexture( ...@@ -612,7 +616,8 @@ void VideoResourceUpdater::CopyPlaneTexture(
external_resources->mailboxes.push_back(mailbox); external_resources->mailboxes.push_back(mailbox);
external_resources->release_callbacks.push_back( 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( VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes(
...@@ -664,8 +669,8 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes( ...@@ -664,8 +669,8 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes(
media::VideoFrameMetadata::WANTS_PROMOTION_HINT)); media::VideoFrameMetadata::WANTS_PROMOTION_HINT));
#endif #endif
external_resources.mailboxes.push_back(mailbox); external_resources.mailboxes.push_back(mailbox);
external_resources.release_callbacks.push_back( external_resources.release_callbacks.push_back(base::Bind(
base::Bind(&ReturnTexture, AsWeakPtr(), video_frame)); &ReturnTexture, weak_ptr_factory_.GetWeakPtr(), video_frame));
} }
} }
return external_resources; return external_resources;
......
...@@ -70,8 +70,7 @@ class CC_EXPORT VideoFrameExternalResources { ...@@ -70,8 +70,7 @@ class CC_EXPORT VideoFrameExternalResources {
// VideoResourceUpdater is used by the video system to produce frame content as // VideoResourceUpdater is used by the video system to produce frame content as
// resources consumable by the compositor. // resources consumable by the compositor.
class CC_EXPORT VideoResourceUpdater class CC_EXPORT VideoResourceUpdater {
: public base::SupportsWeakPtr<VideoResourceUpdater> {
public: public:
VideoResourceUpdater(ContextProvider* context_provider, VideoResourceUpdater(ContextProvider* context_provider,
ResourceProvider* resource_provider, ResourceProvider* resource_provider,
...@@ -185,6 +184,8 @@ class CC_EXPORT VideoResourceUpdater ...@@ -185,6 +184,8 @@ class CC_EXPORT VideoResourceUpdater
// data transfers. // data transfers.
ResourceList all_resources_; ResourceList all_resources_;
base::WeakPtrFactory<VideoResourceUpdater> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(VideoResourceUpdater); DISALLOW_COPY_AND_ASSIGN(VideoResourceUpdater);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment