| Index: trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc
|
| ===================================================================
|
| --- trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc (revision 269420)
|
| +++ trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc (working copy)
|
| @@ -185,7 +185,6 @@
|
| connection_id_(0),
|
| next_id_(1),
|
| next_change_id_(0),
|
| - sync_factory_(this),
|
| init_loop_(NULL) {
|
| InterfacePipe<services::view_manager::IViewManager, AnyInterface>
|
| view_manager_pipe;
|
| @@ -205,7 +204,6 @@
|
| }
|
|
|
| ViewManagerSynchronizer::~ViewManagerSynchronizer() {
|
| - DoSync();
|
| }
|
|
|
| TransportNodeId ViewManagerSynchronizer::CreateViewTreeNode() {
|
| @@ -245,10 +243,6 @@
|
| ScheduleSync();
|
| }
|
|
|
| -bool ViewManagerSynchronizer::OwnsNode(TransportNodeId id) const {
|
| - return HiWord(id) == connection_id_;
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // ViewManagerSynchronizer, IViewManagerClient implementation:
|
|
|
| @@ -263,26 +257,24 @@
|
| uint32_t old_parent_id,
|
| uint32_t change_id) {
|
| if (change_id == 0) {
|
| - ViewTreeNode* new_parent = view_manager_->GetNodeById(new_parent_id);
|
| - ViewTreeNode* old_parent = view_manager_->GetNodeById(old_parent_id);
|
| + ViewTreeNode* new_parent =
|
| + view_manager_->tree()->GetChildById(new_parent_id);
|
| + ViewTreeNode* old_parent =
|
| + view_manager_->tree()->GetChildById(old_parent_id);
|
| ViewTreeNode* node = NULL;
|
| if (old_parent) {
|
| // Existing node, mapped in this connection's tree.
|
| // TODO(beng): verify this is actually true.
|
| - node = view_manager_->GetNodeById(node_id);
|
| + node = view_manager_->tree()->GetChildById(node_id);
|
| DCHECK_EQ(node->parent(), old_parent);
|
| } else {
|
| // New node, originating from another connection.
|
| - node = ViewTreeNodePrivate::LocalCreate();
|
| + node = new ViewTreeNode;
|
| ViewTreeNodePrivate private_node(node);
|
| private_node.set_view_manager(view_manager_);
|
| private_node.set_id(node_id);
|
| - ViewManagerPrivate(view_manager_).AddNode(node->id(), node);
|
| }
|
| - if (new_parent)
|
| - ViewTreeNodePrivate(new_parent).LocalAddChild(node);
|
| - else
|
| - ViewTreeNodePrivate(old_parent).LocalRemoveChild(node);
|
| + ViewTreeNodePrivate(new_parent).LocalAddChild(node);
|
| }
|
| }
|
|
|
| @@ -293,24 +285,13 @@
|
| // ..
|
| }
|
|
|
| -void ViewManagerSynchronizer::OnNodeDeleted(uint32_t node_id,
|
| - uint32_t change_id) {
|
| - if (change_id == 0) {
|
| - ViewTreeNode* node = view_manager_->GetNodeById(node_id);
|
| - if (node)
|
| - ViewTreeNodePrivate(node).LocalDestroy();
|
| - }
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // ViewManagerSynchronizer, private:
|
|
|
| void ViewManagerSynchronizer::ScheduleSync() {
|
| - if (sync_factory_.HasWeakPtrs())
|
| - return;
|
| base::MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&ViewManagerSynchronizer::DoSync, sync_factory_.GetWeakPtr()));
|
| + base::Bind(&ViewManagerSynchronizer::DoSync, base::Unretained(this)));
|
| }
|
|
|
| void ViewManagerSynchronizer::DoSync() {
|
| @@ -355,7 +336,7 @@
|
| }
|
| // We don't use the ctor that takes a ViewManager here, since it will call
|
| // back to the service and attempt to create a new node.
|
| - ViewTreeNode* node = ViewTreeNodePrivate::LocalCreate();
|
| + ViewTreeNode* node = new ViewTreeNode;
|
| ViewTreeNodePrivate private_node(node);
|
| private_node.set_view_manager(view_manager_);
|
| private_node.set_id(nodes[i].node_id());
|
| @@ -364,9 +345,8 @@
|
| if (!last_node)
|
| root = node;
|
| last_node = node;
|
| - ViewManagerPrivate(view_manager_).AddNode(node->id(), node);
|
| }
|
| - ViewManagerPrivate(view_manager_).set_root(root);
|
| + ViewManagerPrivate(view_manager_).SetRoot(root);
|
| if (init_loop_)
|
| init_loop_->Quit();
|
| }
|
|
|