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

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

Issue 143803004: android: Migrate old content readback to use async readback (and delegated renderer) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: consistent device scaling Created 6 years, 10 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 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 return latency_info; 132 return latency_info;
133 } 133 }
134 134
135 } // anonymous namespace 135 } // anonymous namespace
136 136
137 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( 137 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
138 RenderWidgetHostImpl* widget_host, 138 RenderWidgetHostImpl* widget_host,
139 ContentViewCoreImpl* content_view_core) 139 ContentViewCoreImpl* content_view_core)
140 : host_(widget_host), 140 : host_(widget_host),
141 needs_begin_frame_(false), 141 needs_begin_frame_(false),
142 are_layers_attached_(!widget_host->is_hidden()), 142 is_showing_(!widget_host->is_hidden()),
143 content_view_core_(NULL), 143 content_view_core_(NULL),
144 ime_adapter_android_(this), 144 ime_adapter_android_(this),
145 cached_background_color_(SK_ColorWHITE), 145 cached_background_color_(SK_ColorWHITE),
146 texture_id_in_layer_(0), 146 texture_id_in_layer_(0),
147 last_output_surface_id_(kUndefinedOutputSurfaceId), 147 last_output_surface_id_(kUndefinedOutputSurfaceId),
148 weak_ptr_factory_(this), 148 weak_ptr_factory_(this),
149 overscroll_effect_enabled_( 149 overscroll_effect_enabled_(
150 !CommandLine::ForCurrentProcess()-> 150 !CommandLine::ForCurrentProcess()->
151 HasSwitch(switches::kDisableOverscrollEdgeEffect)), 151 HasSwitch(switches::kDisableOverscrollEdgeEffect)),
152 overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)), 152 overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)),
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // Ignore the given size as only the Java code has the power to 252 // Ignore the given size as only the Java code has the power to
253 // resize the view on Android. 253 // resize the view on Android.
254 default_size_ = size; 254 default_size_ = size;
255 WasResized(); 255 WasResized();
256 } 256 }
257 257
258 void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) { 258 void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) {
259 SetSize(rect.size()); 259 SetSize(rect.size());
260 } 260 }
261 261
262 blink::WebGLId RenderWidgetHostViewAndroid::GetScaledContentTexture( 262 void RenderWidgetHostViewAndroid::GetScaledContentBitmap(
263 float scale, 263 float scale,
264 gfx::Size* out_size) { 264 gfx::Size* out_size,
265 gfx::Size size(gfx::ToCeiledSize( 265 const base::Callback<void(bool, const SkBitmap&)>& result_callback) {
266 gfx::ScaleSize(texture_size_in_layer_, scale))); 266 if (!IsSurfaceAvailableForCopy()) {
267 267 result_callback.Run(false, SkBitmap());
268 if (!CompositorImpl::IsInitialized() || 268 return;
269 texture_id_in_layer_ == 0 ||
270 texture_size_in_layer_.IsEmpty() ||
271 size.IsEmpty()) {
272 if (out_size)
273 out_size->SetSize(0, 0);
274
275 return 0;
276 } 269 }
277 270
278 if (out_size) 271 gfx::Size bounds = layer_->bounds();
279 *out_size = size; 272 gfx::Rect src_subrect(bounds);
280 273 const gfx::Display& display =
281 GLHelper* helper = ImageTransportFactoryAndroid::GetInstance()->GetGLHelper(); 274 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
282 return helper->CopyAndScaleTexture(texture_id_in_layer_, 275 float device_scale_factor = display.device_scale_factor();
283 texture_size_in_layer_, 276 DCHECK_GT(device_scale_factor, 0);
284 size, 277 gfx::Size dst_size(
285 true, 278 gfx::ToCeiledSize(gfx::ScaleSize(bounds, scale / device_scale_factor)));
286 GLHelper::SCALER_QUALITY_FAST); 279 *out_size = dst_size;
280 CopyFromCompositingSurface(
281 src_subrect, dst_size, result_callback, SkBitmap::kARGB_8888_Config);
287 } 282 }
288 283
289 bool RenderWidgetHostViewAndroid::PopulateBitmapWithContents(jobject jbitmap) { 284 bool RenderWidgetHostViewAndroid::PopulateBitmapWithContents(jobject jbitmap) {
290 if (!CompositorImpl::IsInitialized() || 285 if (!CompositorImpl::IsInitialized() ||
291 texture_id_in_layer_ == 0 || 286 texture_id_in_layer_ == 0 ||
292 texture_size_in_layer_.IsEmpty()) 287 texture_size_in_layer_.IsEmpty())
293 return false; 288 return false;
294 289
295 gfx::JavaBitmap bitmap(jbitmap); 290 gfx::JavaBitmap bitmap(jbitmap);
296 291
(...skipping 19 matching lines...) Expand all
316 gpu::gles2::GLES2Interface* gl = 311 gpu::gles2::GLES2Interface* gl =
317 ImageTransportFactoryAndroid::GetInstance()->GetContextGL(); 312 ImageTransportFactoryAndroid::GetInstance()->GetContextGL();
318 gl->DeleteTextures(1, &texture); 313 gl->DeleteTextures(1, &texture);
319 314
320 return true; 315 return true;
321 } 316 }
322 317
323 bool RenderWidgetHostViewAndroid::HasValidFrame() const { 318 bool RenderWidgetHostViewAndroid::HasValidFrame() const {
324 if (!content_view_core_) 319 if (!content_view_core_)
325 return false; 320 return false;
321 if (!layer_)
322 return false;
323
326 if (texture_size_in_layer_.IsEmpty()) 324 if (texture_size_in_layer_.IsEmpty())
327 return false; 325 return false;
328 326
329 if (UsingDelegatedRenderer()) { 327 if (UsingDelegatedRenderer()) {
330 if (!delegated_renderer_layer_.get()) 328 if (!delegated_renderer_layer_.get())
331 return false; 329 return false;
332 } else { 330 } else {
333 if (texture_id_in_layer_ == 0) 331 if (texture_id_in_layer_ == 0)
334 return false; 332 return false;
335 } 333 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 return false; // ContentViewCore not created yet. 378 return false; // ContentViewCore not created yet.
381 379
382 return content_view_core_->HasFocus(); 380 return content_view_core_->HasFocus();
383 } 381 }
384 382
385 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const { 383 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const {
386 return HasValidFrame(); 384 return HasValidFrame();
387 } 385 }
388 386
389 void RenderWidgetHostViewAndroid::Show() { 387 void RenderWidgetHostViewAndroid::Show() {
390 if (are_layers_attached_) 388 if (is_showing_)
391 return; 389 return;
392 390
393 are_layers_attached_ = true; 391 is_showing_ = true;
394 AttachLayers(); 392 if (layer_)
393 layer_->SetHideLayerAndSubtree(false);
395 394
396 frame_evictor_->SetVisible(true); 395 frame_evictor_->SetVisible(true);
397 WasShown(); 396 WasShown();
398 } 397 }
399 398
400 void RenderWidgetHostViewAndroid::Hide() { 399 void RenderWidgetHostViewAndroid::Hide() {
401 if (!are_layers_attached_) 400 if (!is_showing_)
402 return; 401 return;
403 402
404 are_layers_attached_ = false; 403 is_showing_ = false;
405 RemoveLayers(); 404 if (layer_)
405 layer_->SetHideLayerAndSubtree(true);
406 406
407 frame_evictor_->SetVisible(false); 407 frame_evictor_->SetVisible(false);
408 WasHidden(); 408 WasHidden();
409 } 409 }
410 410
411 bool RenderWidgetHostViewAndroid::IsShowing() { 411 bool RenderWidgetHostViewAndroid::IsShowing() {
412 // ContentViewCoreImpl represents the native side of the Java 412 // ContentViewCoreImpl represents the native side of the Java
413 // ContentViewCore. It being NULL means that it is not attached 413 // ContentViewCore. It being NULL means that it is not attached
414 // to the View system yet, so we treat this RWHVA as hidden. 414 // to the View system yet, so we treat this RWHVA as hidden.
415 return are_layers_attached_ && content_view_core_; 415 return is_showing_ && content_view_core_;
416 } 416 }
417 417
418 void RenderWidgetHostViewAndroid::LockResources() { 418 void RenderWidgetHostViewAndroid::LockResources() {
419 DCHECK(HasValidFrame()); 419 DCHECK(HasValidFrame());
420 DCHECK(host_); 420 DCHECK(host_);
421 DCHECK(!host_->is_hidden()); 421 DCHECK(!host_->is_hidden());
422 frame_evictor_->LockFrame(); 422 frame_evictor_->LockFrame();
423 } 423 }
424 424
425 void RenderWidgetHostViewAndroid::UnlockResources() { 425 void RenderWidgetHostViewAndroid::UnlockResources() {
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 bool check_rgb565_support = gl_helper->CanUseRgb565Readback(); 654 bool check_rgb565_support = gl_helper->CanUseRgb565Readback();
655 if ((bitmap_config == SkBitmap::kRGB_565_Config) && 655 if ((bitmap_config == SkBitmap::kRGB_565_Config) &&
656 !check_rgb565_support) { 656 !check_rgb565_support) {
657 LOG(ERROR) << "Readbackformat rgb565 not supported"; 657 LOG(ERROR) << "Readbackformat rgb565 not supported";
658 callback.Run(false, SkBitmap()); 658 callback.Run(false, SkBitmap());
659 return; 659 return;
660 } 660 }
661 const gfx::Display& display = 661 const gfx::Display& display =
662 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); 662 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
663 float device_scale_factor = display.device_scale_factor(); 663 float device_scale_factor = display.device_scale_factor();
664 664 gfx::Size dst_size_in_pixel =
665 DCHECK_EQ(device_scale_factor, 665 ConvertRectToPixel(device_scale_factor, gfx::Rect(dst_size)).size();
666 ui::GetImageScale(GetScaleFactorForView(this)));
667
668 const gfx::Size& dst_size_in_pixel = ConvertViewSizeToPixel(this, dst_size);
669 gfx::Rect src_subrect_in_pixel = 666 gfx::Rect src_subrect_in_pixel =
670 ConvertRectToPixel(device_scale_factor, src_subrect); 667 ConvertRectToPixel(device_scale_factor, src_subrect);
671 668
672 if (using_synchronous_compositor_) { 669 if (using_synchronous_compositor_) {
673 SynchronousCopyContents(src_subrect_in_pixel, dst_size_in_pixel, callback); 670 SynchronousCopyContents(src_subrect_in_pixel, dst_size_in_pixel, callback);
674 UMA_HISTOGRAM_TIMES("Compositing.CopyFromSurfaceTimeSynchronous", 671 UMA_HISTOGRAM_TIMES("Compositing.CopyFromSurfaceTimeSynchronous",
675 base::TimeTicks::Now() - start_time); 672 base::TimeTicks::Now() - start_time);
676 return; 673 return;
677 } 674 }
678 scoped_ptr<cc::CopyOutputRequest> request; 675 scoped_ptr<cc::CopyOutputRequest> request;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 ack); 746 ack);
750 } 747 }
751 748
752 void RenderWidgetHostViewAndroid::UnusedResourcesAreAvailable() { 749 void RenderWidgetHostViewAndroid::UnusedResourcesAreAvailable() {
753 if (ack_callbacks_.size()) 750 if (ack_callbacks_.size())
754 return; 751 return;
755 SendReturnedDelegatedResources(last_output_surface_id_); 752 SendReturnedDelegatedResources(last_output_surface_id_);
756 } 753 }
757 754
758 void RenderWidgetHostViewAndroid::DestroyDelegatedContent() { 755 void RenderWidgetHostViewAndroid::DestroyDelegatedContent() {
759 if (are_layers_attached_) 756 RemoveLayers();
760 RemoveLayers();
761 frame_provider_ = NULL; 757 frame_provider_ = NULL;
762 delegated_renderer_layer_ = NULL; 758 delegated_renderer_layer_ = NULL;
763 layer_ = NULL; 759 layer_ = NULL;
764 } 760 }
765 761
766 void RenderWidgetHostViewAndroid::SwapDelegatedFrame( 762 void RenderWidgetHostViewAndroid::SwapDelegatedFrame(
767 uint32 output_surface_id, 763 uint32 output_surface_id,
768 scoped_ptr<cc::DelegatedFrameData> frame_data) { 764 scoped_ptr<cc::DelegatedFrameData> frame_data) {
769 bool has_content = !texture_size_in_layer_.IsEmpty(); 765 bool has_content = !texture_size_in_layer_.IsEmpty();
770 766
(...skipping 14 matching lines...) Expand all
785 781
786 if (!has_content) { 782 if (!has_content) {
787 DestroyDelegatedContent(); 783 DestroyDelegatedContent();
788 } else { 784 } else {
789 if (!resource_collection_.get()) { 785 if (!resource_collection_.get()) {
790 resource_collection_ = new cc::DelegatedFrameResourceCollection; 786 resource_collection_ = new cc::DelegatedFrameResourceCollection;
791 resource_collection_->SetClient(this); 787 resource_collection_->SetClient(this);
792 } 788 }
793 if (!frame_provider_ || 789 if (!frame_provider_ ||
794 texture_size_in_layer_ != frame_provider_->frame_size()) { 790 texture_size_in_layer_ != frame_provider_->frame_size()) {
795 if (are_layers_attached_) 791 RemoveLayers();
796 RemoveLayers();
797 frame_provider_ = new cc::DelegatedFrameProvider( 792 frame_provider_ = new cc::DelegatedFrameProvider(
798 resource_collection_.get(), frame_data.Pass()); 793 resource_collection_.get(), frame_data.Pass());
799 delegated_renderer_layer_ = 794 delegated_renderer_layer_ =
800 cc::DelegatedRendererLayer::Create(frame_provider_); 795 cc::DelegatedRendererLayer::Create(frame_provider_);
801 layer_ = delegated_renderer_layer_; 796 layer_ = delegated_renderer_layer_;
802 if (are_layers_attached_) 797 AttachLayers();
803 AttachLayers();
804 } else { 798 } else {
805 frame_provider_->SetFrameData(frame_data.Pass()); 799 frame_provider_->SetFrameData(frame_data.Pass());
806 } 800 }
807 } 801 }
808 802
809 if (delegated_renderer_layer_.get()) { 803 if (delegated_renderer_layer_.get()) {
810 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_); 804 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_);
811 delegated_renderer_layer_->SetIsDrawable(true); 805 delegated_renderer_layer_->SetIsDrawable(true);
812 delegated_renderer_layer_->SetContentsOpaque(true); 806 delegated_renderer_layer_->SetContentsOpaque(true);
813 delegated_renderer_layer_->SetBounds(content_size_in_layer_); 807 delegated_renderer_layer_->SetBounds(content_size_in_layer_);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 846
853 DCHECK(frame->delegated_frame_data); 847 DCHECK(frame->delegated_frame_data);
854 DCHECK(!frame->delegated_frame_data->render_pass_list.empty()); 848 DCHECK(!frame->delegated_frame_data->render_pass_list.empty());
855 849
856 cc::RenderPass* root_pass = 850 cc::RenderPass* root_pass =
857 frame->delegated_frame_data->render_pass_list.back(); 851 frame->delegated_frame_data->render_pass_list.back();
858 texture_size_in_layer_ = root_pass->output_rect.size(); 852 texture_size_in_layer_ = root_pass->output_rect.size();
859 ComputeContentsSize(frame->metadata); 853 ComputeContentsSize(frame->metadata);
860 854
861 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass()); 855 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass());
856 frame_evictor_->SwappedFrame(!host_->is_hidden());
862 return; 857 return;
863 } 858 }
864 859
865 DCHECK(!UsingDelegatedRenderer()); 860 DCHECK(!UsingDelegatedRenderer());
866 861
867 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero()) 862 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero())
868 return; 863 return;
869 864
870 if (output_surface_id != last_output_surface_id_) { 865 if (output_surface_id != last_output_surface_id_) {
871 current_mailbox_ = gpu::Mailbox(); 866 current_mailbox_ = gpu::Mailbox();
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 999
1005 void RenderWidgetHostViewAndroid::AttachLayers() { 1000 void RenderWidgetHostViewAndroid::AttachLayers() {
1006 if (!content_view_core_) 1001 if (!content_view_core_)
1007 return; 1002 return;
1008 if (!layer_.get()) 1003 if (!layer_.get())
1009 return; 1004 return;
1010 1005
1011 content_view_core_->AttachLayer(layer_); 1006 content_view_core_->AttachLayer(layer_);
1012 if (overscroll_effect_enabled_) 1007 if (overscroll_effect_enabled_)
1013 overscroll_effect_->Enable(); 1008 overscroll_effect_->Enable();
1009 layer_->SetHideLayerAndSubtree(!is_showing_);
1014 } 1010 }
1015 1011
1016 void RenderWidgetHostViewAndroid::RemoveLayers() { 1012 void RenderWidgetHostViewAndroid::RemoveLayers() {
1017 if (!content_view_core_) 1013 if (!content_view_core_)
1018 return; 1014 return;
1019 if (!layer_.get()) 1015 if (!layer_.get())
1020 return; 1016 return;
1021 1017
1022 content_view_core_->RemoveLayer(layer_); 1018 content_view_core_->RemoveLayer(layer_);
1023 overscroll_effect_->Disable(); 1019 overscroll_effect_->Disable();
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1324 (offset.y() + clipped_content.height()) * uv_scale.y())); 1320 (offset.y() + clipped_content.height()) * uv_scale.y()));
1325 } 1321 }
1326 1322
1327 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { 1323 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const {
1328 return cached_background_color_; 1324 return cached_background_color_;
1329 } 1325 }
1330 1326
1331 void RenderWidgetHostViewAndroid::OnOverscrolled( 1327 void RenderWidgetHostViewAndroid::OnOverscrolled(
1332 gfx::Vector2dF accumulated_overscroll, 1328 gfx::Vector2dF accumulated_overscroll,
1333 gfx::Vector2dF current_fling_velocity) { 1329 gfx::Vector2dF current_fling_velocity) {
1334 if (!content_view_core_ || !are_layers_attached_) 1330 if (!content_view_core_ || !layer_ || !is_showing_)
1335 return; 1331 return;
1336 1332
1337 if (overscroll_effect_->OnOverscrolled(content_view_core_->GetLayer(), 1333 if (overscroll_effect_->OnOverscrolled(content_view_core_->GetLayer(),
1338 base::TimeTicks::Now(), 1334 base::TimeTicks::Now(),
1339 accumulated_overscroll, 1335 accumulated_overscroll,
1340 current_fling_velocity)) { 1336 current_fling_velocity)) {
1341 content_view_core_->SetNeedsAnimate(); 1337 content_view_core_->SetNeedsAnimate();
1342 } 1338 }
1343 } 1339 }
1344 1340
1345 void RenderWidgetHostViewAndroid::DidStopFlinging() { 1341 void RenderWidgetHostViewAndroid::DidStopFlinging() {
1346 if (content_view_core_) 1342 if (content_view_core_)
1347 content_view_core_->DidStopFlinging(); 1343 content_view_core_->DidStopFlinging();
1348 } 1344 }
1349 1345
1350 void RenderWidgetHostViewAndroid::SetContentViewCore( 1346 void RenderWidgetHostViewAndroid::SetContentViewCore(
1351 ContentViewCoreImpl* content_view_core) { 1347 ContentViewCoreImpl* content_view_core) {
1352 RunAckCallbacks(); 1348 RunAckCallbacks();
1353 1349
1354 if (are_layers_attached_) 1350 RemoveLayers();
1355 RemoveLayers();
1356
1357 if (content_view_core_ && !using_synchronous_compositor_) 1351 if (content_view_core_ && !using_synchronous_compositor_)
1358 content_view_core_->GetWindowAndroid()->RemoveObserver(this); 1352 content_view_core_->GetWindowAndroid()->RemoveObserver(this);
1359 1353
1360 content_view_core_ = content_view_core; 1354 content_view_core_ = content_view_core;
1361 1355
1362 if (GetBrowserAccessibilityManager()) { 1356 if (GetBrowserAccessibilityManager()) {
1363 base::android::ScopedJavaLocalRef<jobject> obj; 1357 base::android::ScopedJavaLocalRef<jobject> obj;
1364 if (content_view_core_) 1358 if (content_view_core_)
1365 obj = content_view_core_->GetJavaObject(); 1359 obj = content_view_core_->GetJavaObject();
1366 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()-> 1360 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()->
1367 SetContentViewCore(obj); 1361 SetContentViewCore(obj);
1368 } 1362 }
1369 1363
1370 if (are_layers_attached_) { 1364 AttachLayers();
1371 AttachLayers(); 1365 if (content_view_core_ && !using_synchronous_compositor_)
1372 if (content_view_core_ && !using_synchronous_compositor_) 1366 content_view_core_->GetWindowAndroid()->AddObserver(this);
1373 content_view_core_->GetWindowAndroid()->AddObserver(this);
1374 }
1375 } 1367 }
1376 1368
1377 void RenderWidgetHostViewAndroid::RunAckCallbacks() { 1369 void RenderWidgetHostViewAndroid::RunAckCallbacks() {
1378 while (!ack_callbacks_.empty()) { 1370 while (!ack_callbacks_.empty()) {
1379 ack_callbacks_.front().Run(); 1371 ack_callbacks_.front().Run();
1380 ack_callbacks_.pop(); 1372 ack_callbacks_.pop();
1381 } 1373 }
1382 } 1374 }
1383 1375
1384 void RenderWidgetHostViewAndroid::OnCompositingDidCommit() { 1376 void RenderWidgetHostViewAndroid::OnCompositingDidCommit() {
(...skipping 15 matching lines...) Expand all
1400 RunAckCallbacks(); 1392 RunAckCallbacks();
1401 } 1393 }
1402 1394
1403 // static 1395 // static
1404 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( 1396 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
1405 const gfx::Size& dst_size_in_pixel, 1397 const gfx::Size& dst_size_in_pixel,
1406 const SkBitmap::Config bitmap_config, 1398 const SkBitmap::Config bitmap_config,
1407 const base::TimeTicks& start_time, 1399 const base::TimeTicks& start_time,
1408 const base::Callback<void(bool, const SkBitmap&)>& callback, 1400 const base::Callback<void(bool, const SkBitmap&)>& callback,
1409 scoped_ptr<cc::CopyOutputResult> result) { 1401 scoped_ptr<cc::CopyOutputResult> result) {
1410 DCHECK(result->HasTexture());
1411 base::ScopedClosureRunner scoped_callback_runner( 1402 base::ScopedClosureRunner scoped_callback_runner(
1412 base::Bind(callback, false, SkBitmap())); 1403 base::Bind(callback, false, SkBitmap()));
1413 1404
1414 if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty()) 1405 if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty())
1415 return; 1406 return;
1416 1407
1417 scoped_ptr<SkBitmap> bitmap(new SkBitmap); 1408 scoped_ptr<SkBitmap> bitmap(new SkBitmap);
1418 bitmap->setConfig(bitmap_config, 1409 bitmap->setConfig(bitmap_config,
1419 dst_size_in_pixel.width(), 1410 dst_size_in_pixel.width(),
1420 dst_size_in_pixel.height(), 1411 dst_size_in_pixel.height(),
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 // RenderWidgetHostView, public: 1495 // RenderWidgetHostView, public:
1505 1496
1506 // static 1497 // static
1507 RenderWidgetHostView* 1498 RenderWidgetHostView*
1508 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1499 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1509 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1500 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1510 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1501 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1511 } 1502 }
1512 1503
1513 } // namespace content 1504 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_android.h ('k') | content/public/browser/android/compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698