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

Unified Diff: ui/android/resources/ui_resource_provider.cc

Issue 1371523003: Android: Don't destroy LayerTreeHost when Surface goes away (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698