Index: cc/resources/resource_provider.cc |
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc |
index f081f6236f87a36410537af4a9c0e570f1191510..2a8220aa2ac56fb88add919d40531ca1ef41299f 100644 |
--- a/cc/resources/resource_provider.cc |
+++ b/cc/resources/resource_provider.cc |
@@ -1524,12 +1524,15 @@ void ResourceProvider::AcquirePixelBuffer(ResourceId id) { |
resource->gl_pixel_buffer_id = buffer_id_allocator_->NextId(); |
gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
resource->gl_pixel_buffer_id); |
- unsigned bytes_per_pixel = BitsPerPixel(resource->format) / 8; |
- gl->BufferData( |
- GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
- resource->size.height() * |
- MathUtil::RoundUp(bytes_per_pixel * resource->size.width(), 4u), |
- NULL, GL_DYNAMIC_DRAW); |
+ |
+ base::CheckedNumeric<int> num_bytes = resource->size.height(); |
reveman
2015/06/24 18:02:26
why CheckedNumeric?
|
+ int bytes_per_row_aligned = |
reveman
2015/06/24 18:02:26
How about just bytes_per_row and round up to multi
|
+ (resource->size.width() * BitsPerPixel(resource->format)) / 8; |
+ bytes_per_row_aligned = MathUtil::RoundUp(bytes_per_row, 4u); |
+ num_bytes *= bytes_per_row_aligned; |
+ |
+ gl->BufferData(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, |
+ num_bytes.ValueOrDie(), NULL, GL_DYNAMIC_DRAW); |
gl->BindBuffer(GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM, 0); |
} |