Chromium Code Reviews| Index: cc/resources/video_resource_updater.cc |
| diff --git a/cc/resources/video_resource_updater.cc b/cc/resources/video_resource_updater.cc |
| index a2365ed5aeee38e93f2f1c045c28593ee18a6c2a..11bfc314d1160604a7a6f4d6f0d1cac5b6b865e5 100644 |
| --- a/cc/resources/video_resource_updater.cc |
| +++ b/cc/resources/video_resource_updater.cc |
| @@ -19,7 +19,8 @@ const unsigned kRGBResourceFormat = GL_RGBA; |
| namespace cc { |
| -VideoFrameExternalResources::VideoFrameExternalResources() : type(NONE) {} |
| +VideoFrameExternalResources::VideoFrameExternalResources() |
| + : type(NONE), hardware_resource(0) {} |
| VideoFrameExternalResources::~VideoFrameExternalResources() {} |
| @@ -289,8 +290,7 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes( |
| } |
| VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes( |
| - const scoped_refptr<media::VideoFrame>& video_frame, |
| - const TextureMailbox::ReleaseCallback& release_callback) { |
| + const scoped_refptr<media::VideoFrame>& video_frame) { |
| if (!VerifyFrame(video_frame)) |
| return VideoFrameExternalResources(); |
| @@ -322,37 +322,25 @@ VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes( |
| return VideoFrameExternalResources(); |
| } |
| - gpu::Mailbox mailbox; |
| - GLC(context, context->genMailboxCHROMIUM(mailbox.name)); |
| - GLC(context, context->bindTexture(GL_TEXTURE_2D, video_frame->texture_id())); |
| - GLC(context, context->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
| - GLC(context, context->bindTexture(GL_TEXTURE_2D, 0)); |
| + external_resources.hardware_resource = |
| + resource_provider_->CreateResourceFromExternalTexture( |
| + video_frame->texture_id()); |
| TextureMailbox::ReleaseCallback callback_to_return_resource = |
| base::Bind(&ReturnTexture, |
| base::Unretained(resource_provider_), |
| - release_callback, |
| - video_frame->texture_id(), |
| - mailbox); |
| - external_resources.mailboxes.push_back( |
| - TextureMailbox(mailbox, callback_to_return_resource)); |
| + external_resources.hardware_resource); |
| + external_resources.hardware_release_callback = callback_to_return_resource; |
| return external_resources; |
| } |
| // static |
| void VideoResourceUpdater::ReturnTexture( |
| ResourceProvider* resource_provider, |
| - TextureMailbox::ReleaseCallback callback, |
| - unsigned texture_id, |
| - gpu::Mailbox mailbox, |
| + unsigned resource_id, |
| unsigned sync_point, |
| bool lost_resource) { |
| - WebKit::WebGraphicsContext3D* context = |
| - resource_provider->GraphicsContext3D(); |
| - GLC(context, context->bindTexture(GL_TEXTURE_2D, texture_id)); |
|
no sievers
2013/04/13 01:14:30
Hey when you reland, be sure to use the right text
danakj
2013/04/13 16:47:25
Ohh right. Thanks, I shall pay attention to that
|
| - GLC(context, context->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
| - GLC(context, context->bindTexture(GL_TEXTURE_2D, 0)); |
| - callback.Run(sync_point, lost_resource); |
| + resource_provider->DeleteResource(resource_id); |
| } |
| // static |