Index: ui/android/resources/ui_resource_provider.cc |
diff --git a/ui/android/resources/ui_resource_provider.cc b/ui/android/resources/ui_resource_provider.cc |
index f9776b890148d7d63f0bcdaa0e886a58e77576c1..66be4a8faaa548e0c31362243f0d0de82c6fcab2 100644 |
--- a/ui/android/resources/ui_resource_provider.cc |
+++ b/ui/android/resources/ui_resource_provider.cc |
@@ -10,34 +10,25 @@ |
namespace ui { |
-UIResourceProvider::UIResourceProvider() |
- : host_(NULL), supports_etc1_npot_(false) { |
+UIResourceProvider::UIResourceProvider(cc::LayerTreeHost* host) |
+ : host_(host), supports_etc1_npot_(false) { |
} |
UIResourceProvider::~UIResourceProvider() { |
- SetLayerTreeHost(NULL); |
+ OnUIResourcesEvicted(); |
} |
-void UIResourceProvider::SetLayerTreeHost(cc::LayerTreeHost* host) { |
- if (host_ == host) |
- return; |
- host_ = host; |
- UIResourcesAreInvalid(); |
-} |
- |
-void UIResourceProvider::UIResourcesAreInvalid() { |
- UIResourceClientMap client_map; |
- client_map.swap(ui_resource_client_map_); |
+void UIResourceProvider::OnUIResourcesEvicted() { |
+ // OnWasEvicted() might cause DeleteUIResource() to get called. |
+ UIResourceClientMap client_map(ui_resource_client_map_); |
for (UIResourceClientMap::iterator iter = client_map.begin(); |
iter != client_map.end(); iter++) { |
- iter->second->UIResourceIsInvalid(); |
+ iter->second->OnWasEvicted(); |
} |
} |
cc::UIResourceId UIResourceProvider::CreateUIResource( |
ui::UIResourceClientAndroid* client) { |
- if (!host_) |
- return 0; |
cc::UIResourceId id = host_->CreateUIResource(client); |
DCHECK(ui_resource_client_map_.find(id) == ui_resource_client_map_.end()); |
@@ -51,9 +42,6 @@ void UIResourceProvider::DeleteUIResource(cc::UIResourceId ui_resource_id) { |
DCHECK(iter != ui_resource_client_map_.end()); |
ui_resource_client_map_.erase(iter); |
- |
- if (!host_) |
- return; |
host_->DeleteUIResource(ui_resource_id); |
} |