| OLD | NEW |
| 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" |
| 11 #include "base/callback_helpers.h" | 11 #include "base/callback_helpers.h" |
| 12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
| 15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 16 #include "base/threading/worker_pool.h" | 16 #include "base/threading/worker_pool.h" |
| 17 #include "cc/layers/delegated_frame_provider.h" |
| 17 #include "cc/layers/delegated_renderer_layer.h" | 18 #include "cc/layers/delegated_renderer_layer.h" |
| 18 #include "cc/layers/layer.h" | 19 #include "cc/layers/layer.h" |
| 19 #include "cc/layers/texture_layer.h" | 20 #include "cc/layers/texture_layer.h" |
| 20 #include "cc/output/compositor_frame.h" | 21 #include "cc/output/compositor_frame.h" |
| 21 #include "cc/output/compositor_frame_ack.h" | 22 #include "cc/output/compositor_frame_ack.h" |
| 22 #include "cc/output/copy_output_request.h" | 23 #include "cc/output/copy_output_request.h" |
| 23 #include "cc/output/copy_output_result.h" | 24 #include "cc/output/copy_output_result.h" |
| 24 #include "cc/resources/single_release_callback.h" | 25 #include "cc/resources/single_release_callback.h" |
| 25 #include "cc/trees/layer_tree_host.h" | 26 #include "cc/trees/layer_tree_host.h" |
| 26 #include "content/browser/accessibility/browser_accessibility_manager_android.h" | 27 #include "content/browser/accessibility/browser_accessibility_manager_android.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 const base::Callback<void(bool, const SkBitmap&)>& callback, | 93 const base::Callback<void(bool, const SkBitmap&)>& callback, |
| 93 scoped_ptr<cc::SingleReleaseCallback> release_callback, | 94 scoped_ptr<cc::SingleReleaseCallback> release_callback, |
| 94 scoped_ptr<SkBitmap> bitmap, | 95 scoped_ptr<SkBitmap> bitmap, |
| 95 scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock, | 96 scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock, |
| 96 bool result) { | 97 bool result) { |
| 97 bitmap_pixels_lock.reset(); | 98 bitmap_pixels_lock.reset(); |
| 98 release_callback->Run(0, false); | 99 release_callback->Run(0, false); |
| 99 callback.Run(result, *bitmap); | 100 callback.Run(result, *bitmap); |
| 100 } | 101 } |
| 101 | 102 |
| 103 bool UsingDelegatedRenderer() { |
| 104 return CommandLine::ForCurrentProcess()->HasSwitch( |
| 105 switches::kEnableDelegatedRenderer); |
| 106 } |
| 107 |
| 102 } // anonymous namespace | 108 } // anonymous namespace |
| 103 | 109 |
| 104 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( | 110 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
| 105 RenderWidgetHostImpl* widget_host, | 111 RenderWidgetHostImpl* widget_host, |
| 106 ContentViewCoreImpl* content_view_core) | 112 ContentViewCoreImpl* content_view_core) |
| 107 : host_(widget_host), | 113 : host_(widget_host), |
| 108 needs_begin_frame_(false), | 114 needs_begin_frame_(false), |
| 109 are_layers_attached_(true), | 115 are_layers_attached_(true), |
| 110 content_view_core_(NULL), | 116 content_view_core_(NULL), |
| 111 ime_adapter_android_(this), | 117 ime_adapter_android_(this), |
| 112 cached_background_color_(SK_ColorWHITE), | 118 cached_background_color_(SK_ColorWHITE), |
| 113 texture_id_in_layer_(0), | 119 texture_id_in_layer_(0), |
| 114 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId), | 120 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId), |
| 115 weak_ptr_factory_(this), | 121 weak_ptr_factory_(this), |
| 116 overscroll_effect_enabled_(true), | 122 overscroll_effect_enabled_(true), |
| 117 flush_input_requested_(false) { | 123 flush_input_requested_(false) { |
| 118 if (CommandLine::ForCurrentProcess()->HasSwitch( | 124 if (!UsingDelegatedRenderer()) { |
| 119 switches::kEnableDelegatedRenderer)) { | |
| 120 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); | |
| 121 layer_ = delegated_renderer_layer_; | |
| 122 } else { | |
| 123 texture_layer_ = cc::TextureLayer::Create(this); | 125 texture_layer_ = cc::TextureLayer::Create(this); |
| 124 layer_ = texture_layer_; | 126 layer_ = texture_layer_; |
| 125 } | 127 } |
| 126 | 128 |
| 127 layer_->SetContentsOpaque(true); | |
| 128 | |
| 129 overscroll_effect_enabled_ = !CommandLine::ForCurrentProcess()-> | 129 overscroll_effect_enabled_ = !CommandLine::ForCurrentProcess()-> |
| 130 HasSwitch(switches::kDisableOverscrollEdgeEffect); | 130 HasSwitch(switches::kDisableOverscrollEdgeEffect); |
| 131 // Don't block the main thread with effect resource loading. | 131 // Don't block the main thread with effect resource loading. |
| 132 // Actual effect creation is deferred until an overscroll event is received. | 132 // Actual effect creation is deferred until an overscroll event is received. |
| 133 if (overscroll_effect_enabled_) { | 133 if (overscroll_effect_enabled_) { |
| 134 base::WorkerPool::PostTask(FROM_HERE, | 134 base::WorkerPool::PostTask(FROM_HERE, |
| 135 base::Bind(&OverscrollGlow::EnsureResources), | 135 base::Bind(&OverscrollGlow::EnsureResources), |
| 136 true); | 136 true); |
| 137 } | 137 } |
| 138 | 138 |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 static_cast<unsigned char*> (bitmap.pixels())); | 276 static_cast<unsigned char*> (bitmap.pixels())); |
| 277 | 277 |
| 278 WebKit::WebGraphicsContext3D* context = | 278 WebKit::WebGraphicsContext3D* context = |
| 279 ImageTransportFactoryAndroid::GetInstance()->GetContext3D(); | 279 ImageTransportFactoryAndroid::GetInstance()->GetContext3D(); |
| 280 context->deleteTexture(texture); | 280 context->deleteTexture(texture); |
| 281 | 281 |
| 282 return true; | 282 return true; |
| 283 } | 283 } |
| 284 | 284 |
| 285 bool RenderWidgetHostViewAndroid::HasValidFrame() const { | 285 bool RenderWidgetHostViewAndroid::HasValidFrame() const { |
| 286 return texture_id_in_layer_ != 0 && | 286 if (!content_view_core_) |
| 287 content_view_core_ && | 287 return false; |
| 288 !texture_size_in_layer_.IsEmpty(); | 288 if (texture_size_in_layer_.IsEmpty()) |
| 289 return false; |
| 290 |
| 291 if (UsingDelegatedRenderer()) { |
| 292 if (!delegated_renderer_layer_.get()) |
| 293 return false; |
| 294 } else { |
| 295 if (texture_id_in_layer_ == 0) |
| 296 return false; |
| 297 } |
| 298 |
| 299 return true; |
| 289 } | 300 } |
| 290 | 301 |
| 291 gfx::NativeView RenderWidgetHostViewAndroid::GetNativeView() const { | 302 gfx::NativeView RenderWidgetHostViewAndroid::GetNativeView() const { |
| 292 return content_view_core_->GetViewAndroid(); | 303 return content_view_core_->GetViewAndroid(); |
| 293 } | 304 } |
| 294 | 305 |
| 295 gfx::NativeViewId RenderWidgetHostViewAndroid::GetNativeViewId() const { | 306 gfx::NativeViewId RenderWidgetHostViewAndroid::GetNativeViewId() const { |
| 296 return reinterpret_cast<gfx::NativeViewId>( | 307 return reinterpret_cast<gfx::NativeViewId>( |
| 297 const_cast<RenderWidgetHostViewAndroid*>(this)); | 308 const_cast<RenderWidgetHostViewAndroid*>(this)); |
| 298 } | 309 } |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 631 anchor_x, anchor_y + distance_between_pointers / 2, | 642 anchor_x, anchor_y + distance_between_pointers / 2, |
| 632 0, (zoom_in ? pixels_to_move : -pixels_to_move) / 2)); | 643 0, (zoom_in ? pixels_to_move : -pixels_to_move) / 2)); |
| 633 } | 644 } |
| 634 | 645 |
| 635 void RenderWidgetHostViewAndroid::OnAcceleratedCompositingStateChange() { | 646 void RenderWidgetHostViewAndroid::OnAcceleratedCompositingStateChange() { |
| 636 } | 647 } |
| 637 | 648 |
| 638 void RenderWidgetHostViewAndroid::SendDelegatedFrameAck( | 649 void RenderWidgetHostViewAndroid::SendDelegatedFrameAck( |
| 639 uint32 output_surface_id) { | 650 uint32 output_surface_id) { |
| 640 cc::CompositorFrameAck ack; | 651 cc::CompositorFrameAck ack; |
| 641 delegated_renderer_layer_->TakeUnusedResourcesForChildCompositor( | 652 if (resource_collection_.get()) |
| 642 &ack.resources); | 653 resource_collection_->TakeUnusedResourcesForChildCompositor(&ack.resources); |
| 643 RenderWidgetHostImpl::SendSwapCompositorFrameAck( | 654 RenderWidgetHostImpl::SendSwapCompositorFrameAck(host_->GetRoutingID(), |
| 644 host_->GetRoutingID(), output_surface_id, | 655 output_surface_id, |
| 645 host_->GetProcess()->GetID(), ack); | 656 host_->GetProcess()->GetID(), |
| 657 ack); |
| 658 } |
| 659 |
| 660 void RenderWidgetHostViewAndroid::UnusedResourcesAreAvailable() { |
| 661 // TODO(danakj): If no ack is pending, collect and send resources now. |
| 662 } |
| 663 |
| 664 void RenderWidgetHostViewAndroid::DestroyDelegatedContent() { |
| 665 RemoveLayers(); |
| 666 frame_provider_ = NULL; |
| 667 delegated_renderer_layer_ = NULL; |
| 668 layer_ = NULL; |
| 646 } | 669 } |
| 647 | 670 |
| 648 void RenderWidgetHostViewAndroid::SwapDelegatedFrame( | 671 void RenderWidgetHostViewAndroid::SwapDelegatedFrame( |
| 649 uint32 output_surface_id, | 672 uint32 output_surface_id, |
| 650 scoped_ptr<cc::DelegatedFrameData> frame_data) { | 673 scoped_ptr<cc::DelegatedFrameData> frame_data) { |
| 651 bool has_frame = frame_data.get() && !frame_data->render_pass_list.empty(); | 674 bool has_content = !texture_size_in_layer_.IsEmpty(); |
| 652 | 675 |
| 653 if (has_frame) { | 676 if (output_surface_id != current_mailbox_output_surface_id_) { |
| 654 delegated_renderer_layer_->SetFrameData(frame_data.Pass()); | 677 // TODO(danakj): Lose all resources and send them back here, such as: |
| 678 // resource_collection_->LoseAllResources(); |
| 679 // SendReturnedDelegatedResources(last_output_surface_id_); |
| 680 |
| 681 // Drop the cc::DelegatedFrameResourceCollection so that we will not return |
| 682 // any resources from the old output surface with the new output surface id. |
| 683 resource_collection_ = NULL; |
| 684 DestroyDelegatedContent(); |
| 685 } |
| 686 |
| 687 if (!has_content) { |
| 688 DestroyDelegatedContent(); |
| 689 } else { |
| 690 if (!resource_collection_) { |
| 691 resource_collection_ = new cc::DelegatedFrameResourceCollection; |
| 692 resource_collection_->SetClient(this); |
| 693 } |
| 694 if (!frame_provider_ || |
| 695 texture_size_in_layer_ != frame_provider_->frame_size()) { |
| 696 RemoveLayers(); |
| 697 frame_provider_ = new cc::DelegatedFrameProvider( |
| 698 resource_collection_.get(), frame_data.Pass()); |
| 699 delegated_renderer_layer_ = |
| 700 cc::DelegatedRendererLayer::Create(this, frame_provider_); |
| 701 layer_ = delegated_renderer_layer_; |
| 702 AttachLayers(); |
| 703 } else { |
| 704 frame_provider_->SetFrameData(frame_data.Pass()); |
| 705 } |
| 706 } |
| 707 |
| 708 if (delegated_renderer_layer_.get()) { |
| 655 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_); | 709 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_); |
| 656 layer_->SetIsDrawable(true); | 710 delegated_renderer_layer_->SetIsDrawable(true); |
| 711 delegated_renderer_layer_->SetContentsOpaque(true); |
| 712 delegated_renderer_layer_->SetBounds(content_size_in_layer_); |
| 713 delegated_renderer_layer_->SetNeedsDisplay(); |
| 657 } | 714 } |
| 658 layer_->SetBounds(content_size_in_layer_); | |
| 659 layer_->SetNeedsDisplay(); | |
| 660 | 715 |
| 661 base::Closure ack_callback = | 716 base::Closure ack_callback = |
| 662 base::Bind(&RenderWidgetHostViewAndroid::SendDelegatedFrameAck, | 717 base::Bind(&RenderWidgetHostViewAndroid::SendDelegatedFrameAck, |
| 663 weak_ptr_factory_.GetWeakPtr(), | 718 weak_ptr_factory_.GetWeakPtr(), |
| 664 output_surface_id); | 719 output_surface_id); |
| 665 | 720 |
| 666 if (host_->is_hidden()) | 721 if (host_->is_hidden()) |
| 667 ack_callback.Run(); | 722 ack_callback.Run(); |
| 668 else | 723 else |
| 669 ack_callbacks_.push(ack_callback); | 724 ack_callbacks_.push(ack_callback); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 685 } | 740 } |
| 686 | 741 |
| 687 void RenderWidgetHostViewAndroid::OnSwapCompositorFrame( | 742 void RenderWidgetHostViewAndroid::OnSwapCompositorFrame( |
| 688 uint32 output_surface_id, | 743 uint32 output_surface_id, |
| 689 scoped_ptr<cc::CompositorFrame> frame) { | 744 scoped_ptr<cc::CompositorFrame> frame) { |
| 690 // Always let ContentViewCore know about the new frame first, so it can decide | 745 // Always let ContentViewCore know about the new frame first, so it can decide |
| 691 // to schedule a Draw immediately when it sees the texture layer invalidation. | 746 // to schedule a Draw immediately when it sees the texture layer invalidation. |
| 692 UpdateContentViewCoreFrameMetadata(frame->metadata); | 747 UpdateContentViewCoreFrameMetadata(frame->metadata); |
| 693 | 748 |
| 694 if (frame->delegated_frame_data) { | 749 if (frame->delegated_frame_data) { |
| 695 if (!frame->delegated_frame_data->render_pass_list.empty()) { | 750 DCHECK(UsingDelegatedRenderer()); |
| 696 texture_size_in_layer_ = frame->delegated_frame_data->render_pass_list | 751 |
| 697 .back()->output_rect.size(); | 752 DCHECK(frame->delegated_frame_data); |
| 698 } | 753 DCHECK(!frame->delegated_frame_data->render_pass_list.empty()); |
| 754 |
| 755 cc::RenderPass* root_pass = |
| 756 frame->delegated_frame_data->render_pass_list.back(); |
| 757 texture_size_in_layer_ = root_pass->output_rect.size(); |
| 699 ComputeContentsSize(frame->metadata); | 758 ComputeContentsSize(frame->metadata); |
| 700 | 759 |
| 701 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass()); | 760 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass()); |
| 702 return; | 761 return; |
| 703 } | 762 } |
| 704 | 763 |
| 764 DCHECK(!UsingDelegatedRenderer()); |
| 765 |
| 705 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero()) | 766 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero()) |
| 706 return; | 767 return; |
| 707 | 768 |
| 708 if (output_surface_id != current_mailbox_output_surface_id_) { | 769 if (output_surface_id != current_mailbox_output_surface_id_) { |
| 709 current_mailbox_ = gpu::Mailbox(); | 770 current_mailbox_ = gpu::Mailbox(); |
| 710 current_mailbox_output_surface_id_ = kUndefinedOutputSurfaceId; | 771 current_mailbox_output_surface_id_ = kUndefinedOutputSurfaceId; |
| 711 } | 772 } |
| 712 | 773 |
| 713 base::Closure callback = base::Bind(&InsertSyncPointAndAckForCompositor, | 774 base::Closure callback = base::Bind(&InsertSyncPointAndAckForCompositor, |
| 714 host_->GetProcess()->GetID(), | 775 host_->GetProcess()->GetID(), |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 ImageTransportFactoryAndroid::GetInstance(); | 852 ImageTransportFactoryAndroid::GetInstance(); |
| 792 | 853 |
| 793 // TODO(sievers): When running the impl thread in the browser we | 854 // TODO(sievers): When running the impl thread in the browser we |
| 794 // need to delay the ACK until after commit and use more than a single | 855 // need to delay the ACK until after commit and use more than a single |
| 795 // texture. | 856 // texture. |
| 796 DCHECK(!CompositorImpl::IsThreadingEnabled()); | 857 DCHECK(!CompositorImpl::IsThreadingEnabled()); |
| 797 | 858 |
| 798 if (!texture_id_in_layer_) { | 859 if (!texture_id_in_layer_) { |
| 799 texture_id_in_layer_ = factory->CreateTexture(); | 860 texture_id_in_layer_ = factory->CreateTexture(); |
| 800 texture_layer_->SetIsDrawable(true); | 861 texture_layer_->SetIsDrawable(true); |
| 862 texture_layer_->SetContentsOpaque(true); |
| 801 } | 863 } |
| 802 | 864 |
| 803 ImageTransportFactoryAndroid::GetInstance()->AcquireTexture( | 865 ImageTransportFactoryAndroid::GetInstance()->AcquireTexture( |
| 804 texture_id_in_layer_, mailbox.name); | 866 texture_id_in_layer_, mailbox.name); |
| 805 | 867 |
| 806 ResetClipping(); | 868 ResetClipping(); |
| 807 | 869 |
| 808 current_mailbox_ = mailbox; | 870 current_mailbox_ = mailbox; |
| 809 current_mailbox_output_surface_id_ = output_surface_id; | 871 current_mailbox_output_surface_id_ = output_surface_id; |
| 810 | 872 |
| 811 if (host_->is_hidden()) | 873 if (host_->is_hidden()) |
| 812 ack_callback.Run(); | 874 ack_callback.Run(); |
| 813 else | 875 else |
| 814 ack_callbacks_.push(ack_callback); | 876 ack_callbacks_.push(ack_callback); |
| 815 } | 877 } |
| 816 | 878 |
| 817 void RenderWidgetHostViewAndroid::AttachLayers() { | 879 void RenderWidgetHostViewAndroid::AttachLayers() { |
| 818 if (!content_view_core_) | 880 if (!content_view_core_) |
| 819 return; | 881 return; |
| 882 if (!layer_.get()) |
| 883 return; |
| 820 | 884 |
| 821 content_view_core_->AttachLayer(layer_); | 885 content_view_core_->AttachLayer(layer_); |
| 822 } | 886 } |
| 823 | 887 |
| 824 void RenderWidgetHostViewAndroid::RemoveLayers() { | 888 void RenderWidgetHostViewAndroid::RemoveLayers() { |
| 825 if (!content_view_core_) | 889 if (!content_view_core_) |
| 826 return; | 890 return; |
| 891 if (!layer_.get()) |
| 892 return; |
| 827 | 893 |
| 828 if (overscroll_effect_) | 894 if (overscroll_effect_) |
| 829 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); | 895 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); |
| 830 | 896 |
| 831 content_view_core_->RemoveLayer(layer_); | 897 content_view_core_->RemoveLayer(layer_); |
| 832 } | 898 } |
| 833 | 899 |
| 834 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { | 900 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { |
| 835 if (!overscroll_effect_) | 901 if (!overscroll_effect_) |
| 836 return false; | 902 return false; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 // This tells us we should free the frontbuffer. | 960 // This tells us we should free the frontbuffer. |
| 895 if (texture_id_in_layer_) { | 961 if (texture_id_in_layer_) { |
| 896 texture_layer_->SetTextureId(0); | 962 texture_layer_->SetTextureId(0); |
| 897 texture_layer_->SetIsDrawable(false); | 963 texture_layer_->SetIsDrawable(false); |
| 898 ImageTransportFactoryAndroid::GetInstance()->DeleteTexture( | 964 ImageTransportFactoryAndroid::GetInstance()->DeleteTexture( |
| 899 texture_id_in_layer_); | 965 texture_id_in_layer_); |
| 900 texture_id_in_layer_ = 0; | 966 texture_id_in_layer_ = 0; |
| 901 current_mailbox_ = gpu::Mailbox(); | 967 current_mailbox_ = gpu::Mailbox(); |
| 902 current_mailbox_output_surface_id_ = kUndefinedOutputSurfaceId; | 968 current_mailbox_output_surface_id_ = kUndefinedOutputSurfaceId; |
| 903 } | 969 } |
| 970 if (delegated_renderer_layer_.get()) |
| 971 DestroyDelegatedContent(); |
| 904 } | 972 } |
| 905 | 973 |
| 906 bool RenderWidgetHostViewAndroid::HasAcceleratedSurface( | 974 bool RenderWidgetHostViewAndroid::HasAcceleratedSurface( |
| 907 const gfx::Size& desired_size) { | 975 const gfx::Size& desired_size) { |
| 908 NOTREACHED(); | 976 NOTREACHED(); |
| 909 return false; | 977 return false; |
| 910 } | 978 } |
| 911 | 979 |
| 912 void RenderWidgetHostViewAndroid::GetScreenInfo(WebKit::WebScreenInfo* result) { | 980 void RenderWidgetHostViewAndroid::GetScreenInfo(WebKit::WebScreenInfo* result) { |
| 913 // ScreenInfo isn't tied to the widget on Android. Always return the default. | 981 // ScreenInfo isn't tied to the widget on Android. Always return the default. |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1205 } | 1273 } |
| 1206 | 1274 |
| 1207 bool RenderWidgetHostViewAndroid::PrepareTextureMailbox( | 1275 bool RenderWidgetHostViewAndroid::PrepareTextureMailbox( |
| 1208 cc::TextureMailbox* mailbox, | 1276 cc::TextureMailbox* mailbox, |
| 1209 scoped_ptr<cc::SingleReleaseCallback>* release_callback, | 1277 scoped_ptr<cc::SingleReleaseCallback>* release_callback, |
| 1210 bool use_shared_memory) { | 1278 bool use_shared_memory) { |
| 1211 return false; | 1279 return false; |
| 1212 } | 1280 } |
| 1213 | 1281 |
| 1214 void RenderWidgetHostViewAndroid::OnLostResources() { | 1282 void RenderWidgetHostViewAndroid::OnLostResources() { |
| 1215 if (texture_layer_) | 1283 if (texture_layer_.get()) |
| 1216 texture_layer_->SetIsDrawable(false); | 1284 texture_layer_->SetIsDrawable(false); |
| 1285 if (delegated_renderer_layer_.get()) |
| 1286 DestroyDelegatedContent(); |
| 1217 texture_id_in_layer_ = 0; | 1287 texture_id_in_layer_ = 0; |
| 1218 RunAckCallbacks(); | 1288 RunAckCallbacks(); |
| 1219 } | 1289 } |
| 1220 | 1290 |
| 1221 // static | 1291 // static |
| 1222 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( | 1292 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( |
| 1223 const gfx::Size& dst_size_in_pixel, | 1293 const gfx::Size& dst_size_in_pixel, |
| 1224 const base::Callback<void(bool, const SkBitmap&)>& callback, | 1294 const base::Callback<void(bool, const SkBitmap&)>& callback, |
| 1225 scoped_ptr<cc::CopyOutputResult> result) { | 1295 scoped_ptr<cc::CopyOutputResult> result) { |
| 1226 DCHECK(result->HasTexture()); | 1296 DCHECK(result->HasTexture()); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1313 // RenderWidgetHostView, public: | 1383 // RenderWidgetHostView, public: |
| 1314 | 1384 |
| 1315 // static | 1385 // static |
| 1316 RenderWidgetHostView* | 1386 RenderWidgetHostView* |
| 1317 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { | 1387 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { |
| 1318 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); | 1388 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); |
| 1319 return new RenderWidgetHostViewAndroid(rwhi, NULL); | 1389 return new RenderWidgetHostViewAndroid(rwhi, NULL); |
| 1320 } | 1390 } |
| 1321 | 1391 |
| 1322 } // namespace content | 1392 } // namespace content |
| OLD | NEW |