| 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 3df0b11d6b48905b6221c13a58c9bae0d1a4a0e5..1cad28aef2db7959b586e970a11c5102808a4fbc 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| @@ -574,7 +574,6 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
|
| callback.Run(false, SkBitmap());
|
| return;
|
| }
|
| -
|
| const gfx::Display& display =
|
| gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
|
| float device_scale_factor = display.device_scale_factor();
|
| @@ -590,7 +589,8 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
|
| SynchronousCopyContents(src_subrect_in_pixel, dst_size_in_pixel, callback);
|
| return;
|
| }
|
| -
|
| + //Support format either for ARGB8888 and RGB565.
|
| + bool readback_config_rgb565 = content_view_core_->IsReadBackConfig565();
|
| scoped_ptr<cc::CopyOutputRequest> request;
|
| if (src_subrect_in_pixel.size() == dst_size_in_pixel) {
|
| request = cc::CopyOutputRequest::CreateBitmapRequest(base::Bind(
|
| @@ -601,6 +601,7 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
|
| request = cc::CopyOutputRequest::CreateRequest(base::Bind(
|
| &RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult,
|
| dst_size_in_pixel,
|
| + readback_config_rgb565,
|
| callback));
|
| }
|
| request->set_area(src_subrect_in_pixel);
|
| @@ -1295,6 +1296,7 @@ void RenderWidgetHostViewAndroid::OnLostResources() {
|
| // static
|
| void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
|
| const gfx::Size& dst_size_in_pixel,
|
| + bool readback_config_rgb565,
|
| const base::Callback<void(bool, const SkBitmap&)>& callback,
|
| scoped_ptr<cc::CopyOutputResult> result) {
|
| DCHECK(result->HasTexture());
|
| @@ -1305,9 +1307,16 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
|
| return;
|
|
|
| scoped_ptr<SkBitmap> bitmap(new SkBitmap);
|
| - bitmap->setConfig(SkBitmap::kARGB_8888_Config,
|
| + if(readback_config_rgb565){
|
| + bitmap->setConfig(SkBitmap::kRGB_565_Config,
|
| + dst_size_in_pixel.width(), dst_size_in_pixel.height(),
|
| + 0, kOpaque_SkAlphaType);
|
| + }
|
| + else{
|
| + bitmap->setConfig(SkBitmap::kARGB_8888_Config,
|
| dst_size_in_pixel.width(), dst_size_in_pixel.height(),
|
| 0, kOpaque_SkAlphaType);
|
| + }
|
| if (!bitmap->allocPixels())
|
| return;
|
|
|
| @@ -1337,6 +1346,7 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
|
| gfx::Rect(result->size()),
|
| dst_size_in_pixel,
|
| pixels,
|
| + readback_config_rgb565,
|
| base::Bind(&CopyFromCompositingSurfaceFinished,
|
| callback,
|
| base::Passed(&release_callback),
|
|
|