Index: cc/output/gl_renderer.cc |
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
index 86b6f13b545c3b5b9c783e51ad64a30ed5b7b5cb..2b57d5c4dcddb5bda0638352c6439752bc9abe1b 100644 |
--- a/cc/output/gl_renderer.cc |
+++ b/cc/output/gl_renderer.cc |
@@ -2366,26 +2366,14 @@ void GLRenderer::GetFramebufferPixelsAsync( |
DCHECK_LE(window_rect.bottom(), current_surface_size_.height()); |
if (!request->force_bitmap_result()) { |
- bool own_mailbox = !request->has_texture_mailbox(); |
- |
- GLuint texture_id = 0; |
- gl_->GenTextures(1, &texture_id); |
- |
gpu::Mailbox mailbox; |
+ scoped_ptr<SingleReleaseCallback> release_callback; |
+ bool own_mailbox = !request->has_texture_mailbox(); |
if (own_mailbox) { |
- GLC(gl_, gl_->GenMailboxCHROMIUM(mailbox.name)); |
- } else { |
- mailbox = request->texture_mailbox().mailbox(); |
- DCHECK_EQ(static_cast<unsigned>(GL_TEXTURE_2D), |
- request->texture_mailbox().target()); |
- DCHECK(!mailbox.IsZero()); |
- unsigned incoming_sync_point = request->texture_mailbox().sync_point(); |
- if (incoming_sync_point) |
- GLC(gl_, gl_->WaitSyncPointCHROMIUM(incoming_sync_point)); |
- } |
+ GLuint texture_id = 0; |
+ gl_->GenTextures(1, &texture_id); |
+ GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, texture_id)); |
- GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, texture_id)); |
- if (own_mailbox) { |
GLC(gl_, |
gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
GLC(gl_, |
@@ -2396,24 +2384,34 @@ void GLRenderer::GetFramebufferPixelsAsync( |
GLC(gl_, |
gl_->TexParameteri( |
GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); |
+ GLC(gl_, gl_->GenMailboxCHROMIUM(mailbox.name)); |
GLC(gl_, gl_->ProduceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
- } else { |
- GLC(gl_, gl_->ConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
- } |
- GetFramebufferTexture(texture_id, RGBA_8888, window_rect); |
- GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, 0)); |
- unsigned sync_point = gl_->InsertSyncPointCHROMIUM(); |
- TextureMailbox texture_mailbox(mailbox, GL_TEXTURE_2D, sync_point); |
+ GetFramebufferTexture(texture_id, RGBA_8888, window_rect); |
danakj
2014/07/07 16:47:06
I liked that this call wasn't duplicated, only cod
|
+ GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, 0)); |
- scoped_ptr<SingleReleaseCallback> release_callback; |
- if (own_mailbox) { |
release_callback = texture_mailbox_deleter_->GetReleaseCallback( |
output_surface_->context_provider(), texture_id); |
} else { |
+ mailbox = request->texture_mailbox().mailbox(); |
+ DCHECK_EQ(static_cast<unsigned>(GL_TEXTURE_2D), |
+ request->texture_mailbox().target()); |
+ DCHECK(!mailbox.IsZero()); |
+ unsigned incoming_sync_point = request->texture_mailbox().sync_point(); |
+ if (incoming_sync_point) |
+ GLC(gl_, gl_->WaitSyncPointCHROMIUM(incoming_sync_point)); |
+ |
+ GLuint texture_id = GLC( |
+ gl_, |
+ gl_->CreateAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
+ |
+ GetFramebufferTexture(texture_id, RGBA_8888, window_rect); |
+ |
gl_->DeleteTextures(1, &texture_id); |
} |
+ unsigned sync_point = gl_->InsertSyncPointCHROMIUM(); |
+ TextureMailbox texture_mailbox(mailbox, GL_TEXTURE_2D, sync_point); |
request->SendTextureResult( |
window_rect.size(), texture_mailbox, release_callback.Pass()); |
return; |