Index: content/browser/renderer_host/render_widget_host_view_android.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc |
index f687931630d13362e870a52b05148dbc3da4b7a4..59a51e80533470073e68a679fee28e56f9ce697a 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -2003,17 +2003,21 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( |
else |
output_size_in_pixel = dst_size_in_pixel; |
- scoped_ptr<SkBitmap> bitmap(new SkBitmap); |
- if (!bitmap->tryAllocPixels(SkImageInfo::Make(output_size_in_pixel.width(), |
- output_size_in_pixel.height(), |
- color_type, |
- kOpaque_SkAlphaType))) { |
+ SkColorType preferred_color_type = color_type; |
no sievers
2015/04/22 20:20:39
Can we make color_type non-const instead and overw
patro
2015/04/23 09:43:46
Done.
|
+ GLHelper* gl_helper = GetPostReadbackGLHelper(); |
+ if (gl_helper) { |
no sievers
2015/04/22 20:20:39
nit: if (!gl_helper) return
patro
2015/04/23 09:43:46
Done.
|
+ if (!gl_helper->IsReadbackConfigSupported(preferred_color_type)) |
+ preferred_color_type = kRGBA_8888_SkColorType; |
+ } else { |
return; |
} |
- GLHelper* gl_helper = GetPostReadbackGLHelper(); |
- if (!gl_helper || !gl_helper->IsReadbackConfigSupported(color_type)) |
+ scoped_ptr<SkBitmap> bitmap(new SkBitmap); |
+ if (!bitmap->tryAllocPixels(SkImageInfo::Make( |
+ output_size_in_pixel.width(), output_size_in_pixel.height(), |
+ preferred_color_type, kOpaque_SkAlphaType))) { |
return; |
+ } |
scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock( |
new SkAutoLockPixels(*bitmap)); |
@@ -2029,37 +2033,15 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( |
ignore_result(scoped_callback_runner.Release()); |
gl_helper->CropScaleReadbackAndCleanMailbox( |
- texture_mailbox.mailbox(), |
- texture_mailbox.sync_point(), |
- result->size(), |
- gfx::Rect(result->size()), |
- output_size_in_pixel, |
- pixels, |
- color_type, |
- base::Bind(&CopyFromCompositingSurfaceFinished, |
- callback, |
- base::Passed(&release_callback), |
- base::Passed(&bitmap), |
- start_time, |
- base::Passed(&bitmap_pixels_lock)), |
+ texture_mailbox.mailbox(), texture_mailbox.sync_point(), result->size(), |
+ gfx::Rect(result->size()), output_size_in_pixel, pixels, |
+ preferred_color_type, |
+ base::Bind(&CopyFromCompositingSurfaceFinished, callback, |
+ base::Passed(&release_callback), base::Passed(&bitmap), |
+ start_time, base::Passed(&bitmap_pixels_lock)), |
GLHelper::SCALER_QUALITY_GOOD); |
} |
-SkColorType RenderWidgetHostViewAndroid::PreferredReadbackFormat() { |
- // Define the criteria here. If say the 16 texture readback is |
- // supported we should go with that (this degrades quality) |
- // or stick back to the default format. |
- if (base::SysInfo::IsLowEndDevice()) { |
- // TODO(sievers): Cannot use GLHelper here. Instead remove this API |
- // and have CopyFromCompositingSurface() fall back to RGB8 if 565 was |
- // requested but is not supported. |
- GLHelper* gl_helper = GetPostReadbackGLHelper(); |
- if (gl_helper && gl_helper->IsReadbackConfigSupported(kRGB_565_SkColorType)) |
- return kRGB_565_SkColorType; |
- } |
- return kN32_SkColorType; |
-} |
- |
void RenderWidgetHostViewAndroid::OnStylusSelectBegin(float x0, |
float y0, |
float x1, |