| 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);
|
| }
|
|
|
|
|