Index: mojo/services/public/cpp/view_manager/lib/view_manager.cc |
diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager.cc b/mojo/services/public/cpp/view_manager/lib/view_manager.cc |
index 9325a9950859f7ae7f99ce829f6107b33f3aa287..f3f02e8749bb93281897baefeb0325df4afcd1e1 100644 |
--- a/mojo/services/public/cpp/view_manager/lib/view_manager.cc |
+++ b/mojo/services/public/cpp/view_manager/lib/view_manager.cc |
@@ -6,6 +6,7 @@ |
#include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" |
#include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" |
+#include "mojo/services/public/cpp/view_manager/view.h" |
namespace mojo { |
namespace services { |
@@ -22,6 +23,13 @@ ViewManager::~ViewManager() { |
else |
nodes_.erase(it); |
} |
+ while (!views_.empty()) { |
+ IdToViewMap::iterator it = views_.begin(); |
+ if (synchronizer_->OwnsView(it->second->id())) |
+ it->second->Destroy(); |
+ else |
+ views_.erase(it); |
+ } |
} |
void ViewManager::Init() { |
@@ -33,6 +41,11 @@ ViewTreeNode* ViewManager::GetNodeById(TransportNodeId id) { |
return it != nodes_.end() ? it->second : NULL; |
} |
+View* ViewManager::GetViewById(TransportViewId id) { |
+ IdToViewMap::const_iterator it = views_.find(id); |
+ return it != views_.end() ? it->second : NULL; |
+} |
+ |
} // namespace view_manager |
} // namespace services |
} // namespace mojo |