cc: Remove the WTF::Vector dependency from CCRenderPass.
Replace the use of Vector with std::vector instead.
Covered by existing tests.
BUG=152049
Review URL: https://codereview.chromium.org/10989026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159098 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/cc/CCLayerTreeHostImpl.cpp b/cc/CCLayerTreeHostImpl.cpp
index 4793482..46a8e0a 100644
--- a/cc/CCLayerTreeHostImpl.cpp
+++ b/cc/CCLayerTreeHostImpl.cpp
@@ -30,6 +30,7 @@
#include "CCSingleThreadProxy.h"
#include "TraceEvent.h"
#include <wtf/CurrentTime.h>
+#include <algorithm>
using WebKit::WebTransformationMatrix;
@@ -252,13 +253,13 @@
void CCLayerTreeHostImpl::FrameData::appendRenderPass(scoped_ptr<CCRenderPass> renderPass)
{
CCRenderPass* pass = renderPass.get();
- renderPasses.append(pass);
+ renderPasses.push_back(pass);
renderPassesById.set(pass->id(), renderPass.Pass());
}
bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
{
- ASSERT(frame.renderPasses.isEmpty());
+ ASSERT(!frame.renderPasses.size());
calculateRenderSurfaceLayerList(*frame.renderSurfaceLayerList);
@@ -343,8 +344,8 @@
#endif
if (!m_hasTransparentBackground) {
- frame.renderPasses.last()->setHasTransparentBackground(false);
- frame.renderPasses.last()->appendQuadsToFillScreen(m_rootLayerImpl.get(), m_backgroundColor, occlusionTracker);
+ frame.renderPasses.back()->setHasTransparentBackground(false);
+ frame.renderPasses.back()->appendQuadsToFillScreen(m_rootLayerImpl.get(), m_backgroundColor, occlusionTracker);
}
if (drawFrame)
@@ -413,14 +414,15 @@
static void removeRenderPassesRecursive(CCRenderPass::Id removeRenderPassId, CCLayerTreeHostImpl::FrameData& frame)
{
CCRenderPass* removeRenderPass = findRenderPassById(removeRenderPassId, frame);
- size_t removeIndex = frame.renderPasses.find(removeRenderPass);
+ CCRenderPassList& renderPasses = frame.renderPasses;
+ CCRenderPassList::iterator toRemove = std::find(renderPasses.begin(), renderPasses.end(), removeRenderPass);
// The pass was already removed by another quad - probably the original, and we are the replica.
- if (removeIndex == notFound)
+ if (toRemove == renderPasses.end())
return;
- const CCRenderPass* removedPass = frame.renderPasses[removeIndex];
- frame.renderPasses.remove(removeIndex);
+ const CCRenderPass* removedPass = *toRemove;
+ frame.renderPasses.erase(toRemove);
// Now follow up for all RenderPass quads and remove their RenderPasses recursively.
const CCQuadList& quadList = removedPass->quadList();
@@ -443,14 +445,15 @@
bool CCLayerTreeHostImpl::CullRenderPassesWithNoQuads::shouldRemoveRenderPass(const CCRenderPassDrawQuad& quad, const FrameData& frame) const
{
const CCRenderPass* renderPass = findRenderPassById(quad.renderPassId(), frame);
- size_t passIndex = frame.renderPasses.find(renderPass);
+ const CCRenderPassList& renderPasses = frame.renderPasses;
+ CCRenderPassList::const_iterator foundPass = std::find(renderPasses.begin(), renderPasses.end(), renderPass);
- bool renderPassAlreadyRemoved = passIndex == notFound;
+ bool renderPassAlreadyRemoved = foundPass == renderPasses.end();
if (renderPassAlreadyRemoved)
return false;
// If any quad or RenderPass draws into this RenderPass, then keep it.
- const CCQuadList& quadList = frame.renderPasses[passIndex]->quadList();
+ const CCQuadList& quadList = (*foundPass)->quadList();
for (CCQuadList::constBackToFrontIterator quadListIterator = quadList.backToFrontBegin(); quadListIterator != quadList.backToFrontEnd(); ++quadListIterator) {
CCDrawQuad* currentQuad = *quadListIterator;
@@ -458,7 +461,8 @@
return false;
const CCRenderPass* contributingPass = findRenderPassById(CCRenderPassDrawQuad::materialCast(currentQuad)->renderPassId(), frame);
- if (frame.renderPasses.contains(contributingPass))
+ CCRenderPassList::const_iterator foundContributingPass = std::find(renderPasses.begin(), renderPasses.end(), contributingPass);
+ if (foundContributingPass != renderPasses.end())
return false;
}
return true;
@@ -547,7 +551,7 @@
{
TRACE_EVENT0("cc", "CCLayerTreeHostImpl::drawLayers");
ASSERT(canDraw());
- ASSERT(!frame.renderPasses.isEmpty());
+ ASSERT(frame.renderPasses.size());
// FIXME: use the frame begin time from the overall compositor scheduler.
// This value is currently inaccessible because it is up in Chromium's