Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1195)

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 23648014: cc: Move TextureMailbox::ReleaseCallback to SingleReleaseCallback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: releasecallback: SingleReleaseCallback Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index d99886705eed9c229dbcd3a151deab2f8ffb362f..08b18c91dec5c78e331bf383999a4b77f9010cca 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -101,10 +101,10 @@ class MemoryHolder : public base::RefCounted<MemoryHolder> {
frame_size_(frame_size),
callback_(callback) {}
- cc::TextureMailbox GetMailbox() {
- return cc::TextureMailbox(
- shared_memory_.get(),
- frame_size_,
+ void GetMailbox(cc::TextureMailbox* mailbox,
+ scoped_ptr<cc::SingleReleaseCallback>* release_callback) {
+ *mailbox = cc::TextureMailbox(shared_memory_.get(), frame_size_);
+ *release_callback = cc::SingleReleaseCallback::Create(
base::Bind(ReleaseMailbox, make_scoped_refptr(this)));
}
@@ -1308,8 +1308,11 @@ void RenderWidgetHostViewAura::UpdateExternalTexture() {
CheckResizeLock();
framebuffer_holder_ = NULL;
} else if (is_compositing_active && framebuffer_holder_) {
- cc::TextureMailbox mailbox = framebuffer_holder_->GetMailbox();
+ cc::TextureMailbox mailbox;
+ scoped_ptr<cc::SingleReleaseCallback> callback;
+ framebuffer_holder_->GetMailbox(&mailbox, &callback);
window_->layer()->SetTextureMailbox(mailbox,
+ callback.Pass(),
last_swapped_surface_scale_factor_);
current_frame_size_ = ConvertSizeToDIP(last_swapped_surface_scale_factor_,
mailbox.shared_memory_size());
@@ -1546,13 +1549,17 @@ void RenderWidgetHostViewAura::SwapSoftwareFrame(
frame_data->id)));
bool first_frame = !framebuffer_holder_;
framebuffer_holder_.swap(holder);
- cc::TextureMailbox mailbox = framebuffer_holder_->GetMailbox();
+ cc::TextureMailbox mailbox;
+ scoped_ptr<cc::SingleReleaseCallback> callback;
+ framebuffer_holder_->GetMailbox(&mailbox, &callback);
DCHECK(mailbox.IsSharedMemory());
current_frame_size_ = frame_size_in_dip;
released_front_lock_ = NULL;
CheckResizeLock();
- window_->layer()->SetTextureMailbox(mailbox, frame_device_scale_factor);
+ window_->layer()->SetTextureMailbox(mailbox,
+ callback.Pass(),
+ frame_device_scale_factor);
window_->SchedulePaintInRect(
ConvertRectToDIP(frame_device_scale_factor, damage_rect));
@@ -1787,12 +1794,12 @@ void RenderWidgetHostViewAura::CopyFromCompositingSurfaceHasResult(
static void CopyFromCompositingSurfaceFinished(
const base::Callback<void(bool, const SkBitmap&)>& callback,
- const cc::TextureMailbox::ReleaseCallback& release_callback,
+ scoped_ptr<cc::SingleReleaseCallback> release_callback,
scoped_ptr<SkBitmap> bitmap,
scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock,
bool result) {
bitmap_pixels_lock.reset();
- release_callback.Run(0, false);
+ release_callback->Run(0, false);
callback.Run(result, *bitmap);
}
@@ -1824,23 +1831,25 @@ void RenderWidgetHostViewAura::PrepareTextureCopyOutputResult(
new SkAutoLockPixels(*bitmap));
uint8* pixels = static_cast<uint8*>(bitmap->getPixels());
- scoped_ptr<cc::TextureMailbox> texture_mailbox = result->TakeTexture();
- DCHECK(texture_mailbox->IsTexture());
- if (!texture_mailbox->IsTexture())
+ cc::TextureMailbox texture_mailbox;
+ scoped_ptr<cc::SingleReleaseCallback> release_callback;
+ result->TakeTexture(&texture_mailbox, &release_callback);
+ DCHECK(texture_mailbox.IsTexture());
+ if (!texture_mailbox.IsTexture())
return;
ignore_result(scoped_callback_runner.Release());
gl_helper->CropScaleReadbackAndCleanMailbox(
- texture_mailbox->name(),
- texture_mailbox->sync_point(),
+ texture_mailbox.name(),
+ texture_mailbox.sync_point(),
result->size(),
gfx::Rect(result->size()),
dst_size_in_pixel,
pixels,
base::Bind(&CopyFromCompositingSurfaceFinished,
callback,
- texture_mailbox->callback(),
+ base::Passed(&release_callback),
base::Passed(&bitmap),
base::Passed(&bitmap_pixels_lock)));
}
@@ -1874,9 +1883,9 @@ void RenderWidgetHostViewAura::PrepareBitmapCopyOutputResult(
static void CopyFromCompositingSurfaceFinishedForVideo(
const base::Callback<void(bool)>& callback,
- const cc::TextureMailbox::ReleaseCallback& release_callback,
+ scoped_ptr<cc::SingleReleaseCallback> release_callback,
bool result) {
- release_callback.Run(0, false);
+ release_callback->Run(0, false);
callback.Run(result);
}
@@ -1949,9 +1958,11 @@ void RenderWidgetHostViewAura::CopyFromCompositingSurfaceHasResultForVideo(
if (!gl_helper)
return;
- scoped_ptr<cc::TextureMailbox> texture_mailbox = result->TakeTexture();
- DCHECK(texture_mailbox->IsTexture());
- if (!texture_mailbox->IsTexture())
+ cc::TextureMailbox texture_mailbox;
+ scoped_ptr<cc::SingleReleaseCallback> release_callback;
+ result->TakeTexture(&texture_mailbox, &release_callback);
+ DCHECK(texture_mailbox.IsTexture());
+ if (!texture_mailbox.IsTexture())
return;
gfx::Rect result_rect(result->size());
@@ -1993,10 +2004,10 @@ void RenderWidgetHostViewAura::CopyFromCompositingSurfaceHasResultForVideo(
base::Callback<void(bool result)> finished_callback = base::Bind(
&CopyFromCompositingSurfaceFinishedForVideo,
callback,
- texture_mailbox->callback());
+ base::Passed(&release_callback));
yuv_readback_pipeline->ReadbackYUV(
- texture_mailbox->name(),
- texture_mailbox->sync_point(),
+ texture_mailbox.name(),
+ texture_mailbox.sync_point(),
video_frame.get(),
finished_callback);
}
@@ -2537,12 +2548,14 @@ void RenderWidgetHostViewAura::DidRecreateLayer(ui::Layer *old_layer,
if (old_buffer->memory() && new_buffer->memory()) {
memcpy(new_buffer->memory(), old_buffer->memory(), size);
base::SharedMemory* new_buffer_raw_ptr = new_buffer.get();
- cc::TextureMailbox::ReleaseCallback callback =
- base::Bind(MailboxReleaseCallback, Passed(&new_buffer));
+ scoped_ptr<cc::SingleReleaseCallback> callback =
+ cc::SingleReleaseCallback::Create(base::Bind(MailboxReleaseCallback,
+ Passed(&new_buffer)));
cc::TextureMailbox new_mailbox(new_buffer_raw_ptr,
- old_mailbox.shared_memory_size(),
- callback);
- new_layer->SetTextureMailbox(new_mailbox, mailbox_scale_factor);
+ old_mailbox.shared_memory_size());
+ new_layer->SetTextureMailbox(new_mailbox,
+ callback.Pass(),
+ mailbox_scale_factor);
}
}
// TODO(piman): handle delegated frames.

Powered by Google App Engine
This is Rietveld 408576698