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

Side by Side Diff: cc/TreeSynchronizer.cpp

Issue 11083003: Revert 160631 - [cc] Store CCLayerImpls as scoped_ptrs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/TreeSynchronizer.h ('k') | cc/TreeSynchronizerTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "TreeSynchronizer.h" 7 #include "TreeSynchronizer.h"
8 8
9 #include "CCLayerImpl.h" 9 #include "CCLayerImpl.h"
10 #include "CCScrollbarAnimationController.h" 10 #include "CCScrollbarAnimationController.h"
11 #include "CCScrollbarLayerImpl.h" 11 #include "CCScrollbarLayerImpl.h"
12 #include "LayerChromium.h" 12 #include "LayerChromium.h"
13 #include "ScrollbarLayerChromium.h" 13 #include "ScrollbarLayerChromium.h"
14 14
15 namespace cc { 15 namespace cc {
16 16
17 scoped_ptr<CCLayerImpl> TreeSynchronizer::synchronizeTrees(LayerChromium* layerC hromiumRoot, scoped_ptr<CCLayerImpl> oldCCLayerImplRoot, CCLayerTreeHostImpl* ho stImpl) 17 PassOwnPtr<CCLayerImpl> TreeSynchronizer::synchronizeTrees(LayerChromium* layerC hromiumRoot, PassOwnPtr<CCLayerImpl> oldCCLayerImplRoot, CCLayerTreeHostImpl* ho stImpl)
18 { 18 {
19 ScopedPtrCCLayerImplMap oldLayers; 19 OwnPtrCCLayerImplMap oldLayers;
20 RawPtrCCLayerImplMap newLayers; 20 RawPtrCCLayerImplMap newLayers;
21 21
22 collectExistingCCLayerImplRecursive(oldLayers, oldCCLayerImplRoot.Pass()); 22 collectExistingCCLayerImplRecursive(oldLayers, oldCCLayerImplRoot);
23 23
24 scoped_ptr<CCLayerImpl> newTree = synchronizeTreeRecursive(newLayers, oldLay ers, layerChromiumRoot, hostImpl); 24 OwnPtr<CCLayerImpl> newTree = synchronizeTreeRecursive(newLayers, oldLayers, layerChromiumRoot, hostImpl);
25 25
26 updateScrollbarLayerPointersRecursive(newLayers, layerChromiumRoot); 26 updateScrollbarLayerPointersRecursive(newLayers, layerChromiumRoot);
27 27
28 return newTree.Pass(); 28 return newTree.release();
29 } 29 }
30 30
31 void TreeSynchronizer::collectExistingCCLayerImplRecursive(ScopedPtrCCLayerImplM ap& oldLayers, scoped_ptr<CCLayerImpl> ccLayerImpl) 31 void TreeSynchronizer::collectExistingCCLayerImplRecursive(OwnPtrCCLayerImplMap& oldLayers, PassOwnPtr<CCLayerImpl> popCCLayerImpl)
32 { 32 {
33 OwnPtr<CCLayerImpl> ccLayerImpl = popCCLayerImpl;
34
33 if (!ccLayerImpl) 35 if (!ccLayerImpl)
34 return; 36 return;
35 37
36 ScopedPtrVector<CCLayerImpl>& children = ccLayerImpl->m_children; 38 OwnPtrVector<CCLayerImpl>& children = ccLayerImpl->m_children;
37 for (size_t i = 0; i < children.size(); ++i) 39 for (size_t i = 0; i < children.size(); ++i)
38 collectExistingCCLayerImplRecursive(oldLayers, children.take(i)); 40 collectExistingCCLayerImplRecursive(oldLayers, children.take(i));
39 41
40 collectExistingCCLayerImplRecursive(oldLayers, ccLayerImpl->m_maskLayer.Pass ()); 42 collectExistingCCLayerImplRecursive(oldLayers, ccLayerImpl->m_maskLayer.rele ase());
41 collectExistingCCLayerImplRecursive(oldLayers, ccLayerImpl->m_replicaLayer.P ass()); 43 collectExistingCCLayerImplRecursive(oldLayers, ccLayerImpl->m_replicaLayer.r elease());
42 44
43 int id = ccLayerImpl->id(); 45 int id = ccLayerImpl->id();
44 oldLayers.set(id, ccLayerImpl.Pass()); 46 oldLayers.set(id, ccLayerImpl.release());
45 } 47 }
46 48
47 scoped_ptr<CCLayerImpl> TreeSynchronizer::reuseOrCreateCCLayerImpl(RawPtrCCLayer ImplMap& newLayers, ScopedPtrCCLayerImplMap& oldLayers, LayerChromium* layer) 49 PassOwnPtr<CCLayerImpl> TreeSynchronizer::reuseOrCreateCCLayerImpl(RawPtrCCLayer ImplMap& newLayers, OwnPtrCCLayerImplMap& oldLayers, LayerChromium* layer)
48 { 50 {
49 scoped_ptr<CCLayerImpl> ccLayerImpl = oldLayers.take(layer->id()); 51 OwnPtr<CCLayerImpl> ccLayerImpl = oldLayers.take(layer->id());
50 52
51 if (!ccLayerImpl) 53 if (!ccLayerImpl)
52 ccLayerImpl = layer->createCCLayerImpl(); 54 ccLayerImpl = layer->createCCLayerImpl();
53 55
54 newLayers[layer->id()] = ccLayerImpl.get(); 56 newLayers.set(layer->id(), ccLayerImpl.get());
55 return ccLayerImpl.Pass(); 57 return ccLayerImpl.release();
56 } 58 }
57 59
58 scoped_ptr<CCLayerImpl> TreeSynchronizer::synchronizeTreeRecursive(RawPtrCCLayer ImplMap& newLayers, ScopedPtrCCLayerImplMap& oldLayers, LayerChromium* layer, CC LayerTreeHostImpl* hostImpl) 60 PassOwnPtr<CCLayerImpl> TreeSynchronizer::synchronizeTreeRecursive(RawPtrCCLayer ImplMap& newLayers, OwnPtrCCLayerImplMap& oldLayers, LayerChromium* layer, CCLay erTreeHostImpl* hostImpl)
59 { 61 {
60 if (!layer) 62 if (!layer)
61 return scoped_ptr<CCLayerImpl>(); 63 return nullptr;
62 64
63 scoped_ptr<CCLayerImpl> ccLayerImpl = reuseOrCreateCCLayerImpl(newLayers, ol dLayers, layer); 65 OwnPtr<CCLayerImpl> ccLayerImpl = reuseOrCreateCCLayerImpl(newLayers, oldLay ers, layer);
64 66
65 ccLayerImpl->clearChildList(); 67 ccLayerImpl->clearChildList();
66 const std::vector<scoped_refptr<LayerChromium> >& children = layer->children (); 68 const std::vector<scoped_refptr<LayerChromium> >& children = layer->children ();
67 for (size_t i = 0; i < children.size(); ++i) 69 for (size_t i = 0; i < children.size(); ++i)
68 ccLayerImpl->addChild(synchronizeTreeRecursive(newLayers, oldLayers, chi ldren[i].get(), hostImpl)); 70 ccLayerImpl->addChild(synchronizeTreeRecursive(newLayers, oldLayers, chi ldren[i].get(), hostImpl));
69 71
70 ccLayerImpl->setMaskLayer(synchronizeTreeRecursive(newLayers, oldLayers, lay er->maskLayer(), hostImpl)); 72 ccLayerImpl->setMaskLayer(synchronizeTreeRecursive(newLayers, oldLayers, lay er->maskLayer(), hostImpl));
71 ccLayerImpl->setReplicaLayer(synchronizeTreeRecursive(newLayers, oldLayers, layer->replicaLayer(), hostImpl)); 73 ccLayerImpl->setReplicaLayer(synchronizeTreeRecursive(newLayers, oldLayers, layer->replicaLayer(), hostImpl));
72 74
73 layer->pushPropertiesTo(ccLayerImpl.get()); 75 layer->pushPropertiesTo(ccLayerImpl.get());
74 ccLayerImpl->setLayerTreeHostImpl(hostImpl); 76 ccLayerImpl->setLayerTreeHostImpl(hostImpl);
75 77
76 // Remove all dangling pointers. The pointers will be setup later in updateS crollbarLayerPointersRecursive phase 78 // Remove all dangling pointers. The pointers will be setup later in updateS crollbarLayerPointersRecursive phase
77 if (CCScrollbarAnimationController* scrollbarController = ccLayerImpl->scrol lbarAnimationController()) { 79 if (CCScrollbarAnimationController* scrollbarController = ccLayerImpl->scrol lbarAnimationController()) {
78 scrollbarController->setHorizontalScrollbarLayer(0); 80 scrollbarController->setHorizontalScrollbarLayer(0);
79 scrollbarController->setVerticalScrollbarLayer(0); 81 scrollbarController->setVerticalScrollbarLayer(0);
80 } 82 }
81 83
82 return ccLayerImpl.Pass(); 84 return ccLayerImpl.release();
83 } 85 }
84 86
85 void TreeSynchronizer::updateScrollbarLayerPointersRecursive(const RawPtrCCLayer ImplMap& newLayers, LayerChromium* layer) 87 void TreeSynchronizer::updateScrollbarLayerPointersRecursive(const RawPtrCCLayer ImplMap& newLayers, LayerChromium* layer)
86 { 88 {
87 if (!layer) 89 if (!layer)
88 return; 90 return;
89 91
90 const std::vector<scoped_refptr<LayerChromium> >& children = layer->children (); 92 const std::vector<scoped_refptr<LayerChromium> >& children = layer->children ();
91 for (size_t i = 0; i < children.size(); ++i) 93 for (size_t i = 0; i < children.size(); ++i)
92 updateScrollbarLayerPointersRecursive(newLayers, children[i].get()); 94 updateScrollbarLayerPointersRecursive(newLayers, children[i].get());
93 95
94 ScrollbarLayerChromium* scrollbarLayer = layer->toScrollbarLayerChromium(); 96 ScrollbarLayerChromium* scrollbarLayer = layer->toScrollbarLayerChromium();
95 if (!scrollbarLayer) 97 if (!scrollbarLayer)
96 return; 98 return;
97 99
98 RawPtrCCLayerImplMap::const_iterator iter = newLayers.find(scrollbarLayer->i d()); 100 CCScrollbarLayerImpl* ccScrollbarLayerImpl = static_cast<CCScrollbarLayerImp l*>(newLayers.get(scrollbarLayer->id()));
99 CCScrollbarLayerImpl* ccScrollbarLayerImpl = iter != newLayers.end() ? stati c_cast<CCScrollbarLayerImpl*>(iter->second) : NULL;
100 iter = newLayers.find(scrollbarLayer->scrollLayerId());
101 CCLayerImpl* ccScrollLayerImpl = iter != newLayers.end() ? iter->second : NU LL;
102
103 ASSERT(ccScrollbarLayerImpl); 101 ASSERT(ccScrollbarLayerImpl);
102 CCLayerImpl* ccScrollLayerImpl = newLayers.get(scrollbarLayer->scrollLayerId ());
104 ASSERT(ccScrollLayerImpl); 103 ASSERT(ccScrollLayerImpl);
105 104
106 if (ccScrollbarLayerImpl->orientation() == WebKit::WebScrollbar::Horizontal) 105 if (ccScrollbarLayerImpl->orientation() == WebKit::WebScrollbar::Horizontal)
107 ccScrollLayerImpl->setHorizontalScrollbarLayer(ccScrollbarLayerImpl); 106 ccScrollLayerImpl->setHorizontalScrollbarLayer(ccScrollbarLayerImpl);
108 else 107 else
109 ccScrollLayerImpl->setVerticalScrollbarLayer(ccScrollbarLayerImpl); 108 ccScrollLayerImpl->setVerticalScrollbarLayer(ccScrollbarLayerImpl);
110 } 109 }
111 110
112 } // namespace cc 111 } // namespace cc
OLDNEW
« no previous file with comments | « cc/TreeSynchronizer.h ('k') | cc/TreeSynchronizerTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698