Chromium Code Reviews| Index: media/gpu/rendering_helper.cc |
| diff --git a/media/gpu/rendering_helper.cc b/media/gpu/rendering_helper.cc |
| index 1031ed43d592484e6b38d6b182ccb571f9350337..05185c461c3b71ade2cfe6759a6412ba377ad245 100644 |
| --- a/media/gpu/rendering_helper.cc |
| +++ b/media/gpu/rendering_helper.cc |
| @@ -710,14 +710,13 @@ void RenderingHelper::Clear() { |
| thumbnails_texture_id_ = 0; |
| } |
| -void RenderingHelper::GetThumbnailsAsRGB(std::vector<unsigned char>* rgb, |
| - bool* alpha_solid, |
| - base::WaitableEvent* done) { |
| +void RenderingHelper::GetThumbnailsAsRGBA(std::vector<unsigned char>* rgba, |
| + bool* alpha_solid, |
| + base::WaitableEvent* done) { |
| CHECK(render_as_thumbnails_); |
| const size_t num_pixels = thumbnails_fbo_size_.GetArea(); |
| - std::vector<unsigned char> rgba; |
| - rgba.resize(num_pixels * 4); |
| + rgba->resize(num_pixels * 4); |
| glBindFramebufferEXT(GL_FRAMEBUFFER, thumbnails_fbo_id_); |
| glPixelStorei(GL_PACK_ALIGNMENT, 1); |
| // We can only count on GL_RGBA/GL_UNSIGNED_BYTE support. |
| @@ -728,17 +727,11 @@ void RenderingHelper::GetThumbnailsAsRGB(std::vector<unsigned char>* rgb, |
| &rgba[0]); |
| glBindFramebufferEXT(GL_FRAMEBUFFER, |
| gl_surface_->GetBackingFramebufferObject()); |
| - rgb->resize(num_pixels * 3); |
| - // Drop the alpha channel, but check as we go that it is all 0xff. |
| + |
| + // Check if the alpha channel is all 0xff. |
| bool solid = true; |
| - unsigned char* rgb_ptr = &((*rgb)[0]); |
| - unsigned char* rgba_ptr = &rgba[0]; |
| for (size_t i = 0; i < num_pixels; ++i) { |
| - *rgb_ptr++ = *rgba_ptr++; |
| - *rgb_ptr++ = *rgba_ptr++; |
| - *rgb_ptr++ = *rgba_ptr++; |
| - solid = solid && (*rgba_ptr == 0xff); |
| - rgba_ptr++; |
| + solid = solid && ((*rgba)[4 * i + 3] == 0xff); |
|
scroggo_chromium
2017/06/13 14:54:00
Once solid is false, there's no need to continue t
msarett1
2017/06/13 16:32:03
sgtm, done.
|
| } |
| *alpha_solid = solid; |