Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(358)

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 1732323002: Remove layer for readback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/render_widget_host_view_android.h" 5 #include "content/browser/renderer_host/render_widget_host_view_android.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/android/build_info.h" 10 #include "base/android/build_info.h"
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 scoped_ptr<cc::CopyOutputRequest> request; 894 scoped_ptr<cc::CopyOutputRequest> request;
895 scoped_refptr<cc::Layer> readback_layer; 895 scoped_refptr<cc::Layer> readback_layer;
896 if (!content_view_core_ || !(content_view_core_->GetWindowAndroid())) { 896 if (!content_view_core_ || !(content_view_core_->GetWindowAndroid())) {
897 callback.Run(SkBitmap(), READBACK_FAILED); 897 callback.Run(SkBitmap(), READBACK_FAILED);
898 return; 898 return;
899 } 899 }
900 ui::WindowAndroidCompositor* compositor = 900 ui::WindowAndroidCompositor* compositor =
901 content_view_core_->GetWindowAndroid()->GetCompositor(); 901 content_view_core_->GetWindowAndroid()->GetCompositor();
902 DCHECK(compositor); 902 DCHECK(compositor);
903 DCHECK(!surface_id_.is_null()); 903 DCHECK(!surface_id_.is_null());
904 scoped_refptr<cc::Layer> layer = CreateDelegatedLayer();
905 DCHECK(layer);
906 layer->SetHideLayerAndSubtree(true);
907 compositor->AttachLayerForReadback(layer);
908
909 readback_layer = layer;
910 request = cc::CopyOutputRequest::CreateRequest( 904 request = cc::CopyOutputRequest::CreateRequest(
911 base::Bind(&RenderWidgetHostViewAndroid:: 905 base::Bind(&RenderWidgetHostViewAndroid::
912 PrepareTextureCopyOutputResultForDelegatedReadback, 906 PrepareTextureCopyOutputResult,
913 dst_size_in_pixel, preferred_color_type, start_time, 907 dst_size_in_pixel, preferred_color_type, start_time,
914 readback_layer, callback)); 908 callback));
915 if (!src_subrect_in_pixel.IsEmpty()) 909 if (!src_subrect_in_pixel.IsEmpty())
916 request->set_area(src_subrect_in_pixel); 910 request->set_area(src_subrect_in_pixel);
917 readback_layer->RequestCopyOfOutput(std::move(request)); 911 compositor->RequestCopyOfOutputOnRootLayer(std::move(request));
no sievers 2016/02/25 23:26:11 You want to use |layer_| here or you'll get the wh
Jinsuk Kim 2016/02/26 00:53:30 Thanks for helping out. Fixed.
918 } 912 }
919 913
920 void RenderWidgetHostViewAndroid::CopyFromCompositingSurfaceToVideoFrame( 914 void RenderWidgetHostViewAndroid::CopyFromCompositingSurfaceToVideoFrame(
921 const gfx::Rect& src_subrect, 915 const gfx::Rect& src_subrect,
922 const scoped_refptr<media::VideoFrame>& target, 916 const scoped_refptr<media::VideoFrame>& target,
923 const base::Callback<void(const gfx::Rect&, bool)>& callback) { 917 const base::Callback<void(const gfx::Rect&, bool)>& callback) {
924 NOTIMPLEMENTED(); 918 NOTIMPLEMENTED();
925 callback.Run(gfx::Rect(), false); 919 callback.Run(gfx::Rect(), false);
926 } 920 }
927 921
(...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after
1923 ShowInternal(); 1917 ShowInternal();
1924 } 1918 }
1925 1919
1926 void RenderWidgetHostViewAndroid::OnLostResources() { 1920 void RenderWidgetHostViewAndroid::OnLostResources() {
1927 ReleaseLocksOnSurface(); 1921 ReleaseLocksOnSurface();
1928 if (layer_.get()) 1922 if (layer_.get())
1929 DestroyDelegatedContent(); 1923 DestroyDelegatedContent();
1930 DCHECK(ack_callbacks_.empty()); 1924 DCHECK(ack_callbacks_.empty());
1931 } 1925 }
1932 1926
1933 // static
1934 void RenderWidgetHostViewAndroid::
1935 PrepareTextureCopyOutputResultForDelegatedReadback(
1936 const gfx::Size& dst_size_in_pixel,
1937 SkColorType color_type,
1938 const base::TimeTicks& start_time,
1939 scoped_refptr<cc::Layer> readback_layer,
1940 const ReadbackRequestCallback& callback,
1941 scoped_ptr<cc::CopyOutputResult> result) {
1942 readback_layer->RemoveFromParent();
1943 PrepareTextureCopyOutputResult(dst_size_in_pixel, color_type, start_time,
1944 callback, std::move(result));
1945 }
1946
1947 // TODO(wjmaclean): There is significant overlap between 1927 // TODO(wjmaclean): There is significant overlap between
1948 // PrepareTextureCopyOutputResult and CopyFromCompositingSurfaceFinished in 1928 // PrepareTextureCopyOutputResult and CopyFromCompositingSurfaceFinished in
1949 // this file, and the versions in surface_utils.cc. They should 1929 // this file, and the versions in surface_utils.cc. They should
1950 // be merged. See https://crbug.com/582955 1930 // be merged. See https://crbug.com/582955
1951 1931
1952 // static 1932 // static
1953 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( 1933 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
1954 const gfx::Size& dst_size_in_pixel, 1934 const gfx::Size& dst_size_in_pixel,
1955 SkColorType color_type, 1935 SkColorType color_type,
1956 const base::TimeTicks& start_time, 1936 const base::TimeTicks& start_time,
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
2046 results->orientationAngle = display.RotationAsDegree(); 2026 results->orientationAngle = display.RotationAsDegree();
2047 results->orientationType = 2027 results->orientationType =
2048 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display); 2028 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display);
2049 gfx::DeviceDisplayInfo info; 2029 gfx::DeviceDisplayInfo info;
2050 results->depth = info.GetBitsPerPixel(); 2030 results->depth = info.GetBitsPerPixel();
2051 results->depthPerComponent = info.GetBitsPerComponent(); 2031 results->depthPerComponent = info.GetBitsPerComponent();
2052 results->isMonochrome = (results->depthPerComponent == 0); 2032 results->isMonochrome = (results->depthPerComponent == 0);
2053 } 2033 }
2054 2034
2055 } // namespace content 2035 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_android.h ('k') | ui/android/window_android_compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698