Index: Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp |
=================================================================== |
--- Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp (revision 114754) |
+++ Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp (working copy) |
@@ -27,12 +27,14 @@ |
#include "cc/CCRenderPass.h" |
+#include "Color.h" |
#include "cc/CCDamageTracker.h" |
#include "cc/CCDebugBorderDrawQuad.h" |
#include "cc/CCLayerImpl.h" |
#include "cc/CCQuadCuller.h" |
#include "cc/CCRenderSurfaceDrawQuad.h" |
#include "cc/CCSharedQuadState.h" |
+#include "cc/CCSolidColorDrawQuad.h" |
namespace WebCore { |
@@ -88,4 +90,23 @@ |
m_sharedQuadStateList.append(sharedQuadState.release()); |
} |
+void CCRenderPass::appendQuadsToFillScreen(CCLayerImpl* rootLayer, const Color& screenBackgroundColor, const CCOcclusionTrackerImpl& occlusionTracker) |
+{ |
+ if (!rootLayer || !screenBackgroundColor.isValid()) |
+ return; |
+ |
+ Region fillRegion = occlusionTracker.computeVisibleRegionInScreen(); |
+ if (fillRegion.isEmpty()) |
+ return; |
+ |
+ OwnPtr<CCSharedQuadState> sharedQuadState = rootLayer->createSharedQuadState(); |
+ TransformationMatrix transformToLayerSpace = rootLayer->screenSpaceTransform().inverse(); |
+ Vector<IntRect> fillRects = fillRegion.rects(); |
+ for (size_t i = 0; i < fillRects.size(); ++i) { |
+ IntRect layerRect = transformToLayerSpace.mapRect(fillRects[i]); |
+ m_quadList.append(CCSolidColorDrawQuad::create(sharedQuadState.get(), layerRect, screenBackgroundColor)); |
+ } |
+ m_sharedQuadStateList.append(sharedQuadState.release()); |
} |
+ |
+} |