Chromium Code Reviews| Index: content/browser/compositor/delegated_frame_host.cc |
| diff --git a/content/browser/compositor/delegated_frame_host.cc b/content/browser/compositor/delegated_frame_host.cc |
| index 2aa746dfc9e2a0ccc597e4b6e48b1ba2ee941746..20d896f37d1e8e08771982c1129989ead5604c31 100644 |
| --- a/content/browser/compositor/delegated_frame_host.cc |
| +++ b/content/browser/compositor/delegated_frame_host.cc |
| @@ -586,11 +586,13 @@ void DelegatedFrameHost::PrepareTextureCopyOutputResult( |
| // GLHelper::IsReadbackConfigSupported before we processs the result. |
|
no sievers
2015/05/06 23:08:03
What keeps us from doing this here? And falling ba
sivag
2015/05/07 14:14:20
Actually this fails in the browser tests, where so
|
| // See crbug.com/415682. |
| scoped_ptr<SkBitmap> bitmap(new SkBitmap); |
| - if (!bitmap->tryAllocPixels(SkImageInfo::Make(dst_size_in_pixel.width(), |
| - dst_size_in_pixel.height(), |
| - color_type, |
| - kOpaque_SkAlphaType))) |
| + if (!bitmap->tryAllocPixels(SkImageInfo::Make( |
| + dst_size_in_pixel.width(), dst_size_in_pixel.height(), color_type, |
| + kOpaque_SkAlphaType))) { |
| + scoped_callback_runner.Reset(base::Bind( |
| + callback, SkBitmap(), content::READBACK_BITMAP_ALLOCATION_FAILURE)); |
| return; |
| + } |
| ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| GLHelper* gl_helper = factory->GetGLHelper(); |
| @@ -627,13 +629,13 @@ void DelegatedFrameHost::PrepareTextureCopyOutputResult( |
| // static |
| void DelegatedFrameHost::PrepareBitmapCopyOutputResult( |
| const gfx::Size& dst_size_in_pixel, |
| - const SkColorType color_type, |
| + const SkColorType request_color_type, |
| ReadbackRequestCallback& callback, |
| scoped_ptr<cc::CopyOutputResult> result) { |
| + SkColorType color_type = request_color_type; |
| if (color_type != kN32_SkColorType && color_type != kAlpha_8_SkColorType) { |
| - NOTIMPLEMENTED(); |
| - callback.Run(SkBitmap(), READBACK_FORMAT_NOT_SUPPORTED); |
| - return; |
| + // Switch back to default colortype if format not supported. |
| + color_type = kN32_SkColorType; |
| } |
| DCHECK(result->HasBitmap()); |
| scoped_ptr<SkBitmap> source = result->TakeBitmap(); |
| @@ -663,7 +665,7 @@ void DelegatedFrameHost::PrepareBitmapCopyOutputResult( |
| bool success = grayscale_bitmap.tryAllocPixels( |
| SkImageInfo::MakeA8(scaled_bitmap.width(), scaled_bitmap.height())); |
| if (!success) { |
| - callback.Run(SkBitmap(), content::READBACK_MEMORY_ALLOCATION_FAILURE); |
| + callback.Run(SkBitmap(), content::READBACK_BITMAP_ALLOCATION_FAILURE); |
| return; |
| } |
| SkCanvas canvas(grayscale_bitmap); |