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); |