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

Side by Side Diff: cc/TreeSynchronizer.cpp

Issue 11122003: [cc] Rename all cc/ filenames to Chromium style (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/UnthrottledTextureUploader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "config.h"
6
7 #include "TreeSynchronizer.h"
8
9 #include "CCLayerImpl.h"
10 #include "CCScrollbarAnimationController.h"
11 #include "CCScrollbarLayerImpl.h"
12 #include "LayerChromium.h"
13 #include "ScrollbarLayerChromium.h"
14
15 namespace cc {
16
17 scoped_ptr<CCLayerImpl> TreeSynchronizer::synchronizeTrees(LayerChromium* layerC hromiumRoot, scoped_ptr<CCLayerImpl> oldCCLayerImplRoot, CCLayerTreeHostImpl* ho stImpl)
18 {
19 ScopedPtrCCLayerImplMap oldLayers;
20 RawPtrCCLayerImplMap newLayers;
21
22 collectExistingCCLayerImplRecursive(oldLayers, oldCCLayerImplRoot.Pass());
23
24 scoped_ptr<CCLayerImpl> newTree = synchronizeTreeRecursive(newLayers, oldLay ers, layerChromiumRoot, hostImpl);
25
26 updateScrollbarLayerPointersRecursive(newLayers, layerChromiumRoot);
27
28 return newTree.Pass();
29 }
30
31 void TreeSynchronizer::collectExistingCCLayerImplRecursive(ScopedPtrCCLayerImplM ap& oldLayers, scoped_ptr<CCLayerImpl> ccLayerImpl)
32 {
33 if (!ccLayerImpl)
34 return;
35
36 ScopedPtrVector<CCLayerImpl>& children = ccLayerImpl->m_children;
37 for (size_t i = 0; i < children.size(); ++i)
38 collectExistingCCLayerImplRecursive(oldLayers, children.take(i));
39
40 collectExistingCCLayerImplRecursive(oldLayers, ccLayerImpl->m_maskLayer.Pass ());
41 collectExistingCCLayerImplRecursive(oldLayers, ccLayerImpl->m_replicaLayer.P ass());
42
43 int id = ccLayerImpl->id();
44 oldLayers.set(id, ccLayerImpl.Pass());
45 }
46
47 scoped_ptr<CCLayerImpl> TreeSynchronizer::reuseOrCreateCCLayerImpl(RawPtrCCLayer ImplMap& newLayers, ScopedPtrCCLayerImplMap& oldLayers, LayerChromium* layer)
48 {
49 scoped_ptr<CCLayerImpl> ccLayerImpl = oldLayers.take(layer->id());
50
51 if (!ccLayerImpl)
52 ccLayerImpl = layer->createCCLayerImpl();
53
54 newLayers[layer->id()] = ccLayerImpl.get();
55 return ccLayerImpl.Pass();
56 }
57
58 scoped_ptr<CCLayerImpl> TreeSynchronizer::synchronizeTreeRecursive(RawPtrCCLayer ImplMap& newLayers, ScopedPtrCCLayerImplMap& oldLayers, LayerChromium* layer, CC LayerTreeHostImpl* hostImpl)
59 {
60 if (!layer)
61 return scoped_ptr<CCLayerImpl>();
62
63 scoped_ptr<CCLayerImpl> ccLayerImpl = reuseOrCreateCCLayerImpl(newLayers, ol dLayers, layer);
64
65 ccLayerImpl->clearChildList();
66 const std::vector<scoped_refptr<LayerChromium> >& children = layer->children ();
67 for (size_t i = 0; i < children.size(); ++i)
68 ccLayerImpl->addChild(synchronizeTreeRecursive(newLayers, oldLayers, chi ldren[i].get(), hostImpl));
69
70 ccLayerImpl->setMaskLayer(synchronizeTreeRecursive(newLayers, oldLayers, lay er->maskLayer(), hostImpl));
71 ccLayerImpl->setReplicaLayer(synchronizeTreeRecursive(newLayers, oldLayers, layer->replicaLayer(), hostImpl));
72
73 layer->pushPropertiesTo(ccLayerImpl.get());
74 ccLayerImpl->setLayerTreeHostImpl(hostImpl);
75
76 // Remove all dangling pointers. The pointers will be setup later in updateS crollbarLayerPointersRecursive phase
77 if (CCScrollbarAnimationController* scrollbarController = ccLayerImpl->scrol lbarAnimationController()) {
78 scrollbarController->setHorizontalScrollbarLayer(0);
79 scrollbarController->setVerticalScrollbarLayer(0);
80 }
81
82 return ccLayerImpl.Pass();
83 }
84
85 void TreeSynchronizer::updateScrollbarLayerPointersRecursive(const RawPtrCCLayer ImplMap& newLayers, LayerChromium* layer)
86 {
87 if (!layer)
88 return;
89
90 const std::vector<scoped_refptr<LayerChromium> >& children = layer->children ();
91 for (size_t i = 0; i < children.size(); ++i)
92 updateScrollbarLayerPointersRecursive(newLayers, children[i].get());
93
94 ScrollbarLayerChromium* scrollbarLayer = layer->toScrollbarLayerChromium();
95 if (!scrollbarLayer)
96 return;
97
98 RawPtrCCLayerImplMap::const_iterator iter = newLayers.find(scrollbarLayer->i d());
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);
104 ASSERT(ccScrollLayerImpl);
105
106 if (ccScrollbarLayerImpl->orientation() == WebKit::WebScrollbar::Horizontal)
107 ccScrollLayerImpl->setHorizontalScrollbarLayer(ccScrollbarLayerImpl);
108 else
109 ccScrollLayerImpl->setVerticalScrollbarLayer(ccScrollbarLayerImpl);
110 }
111
112 } // namespace cc
OLDNEW
« no previous file with comments | « cc/TreeSynchronizer.h ('k') | cc/UnthrottledTextureUploader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698