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

Unified Diff: Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

Issue 7046081: Merge 88496 - 2011-06-09 James Robinson <jamesr@chromium.org> (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/782/
Patch Set: Created 9 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/WebCore/ChangeLog ('k') | Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
===================================================================
--- Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (revision 88498)
+++ Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (working copy)
@@ -658,6 +658,9 @@
FloatRect layerRect(-0.5 * layer->bounds().width(), -0.5 * layer->bounds().height(), layer->bounds().width(), layer->bounds().height());
IntRect transformedLayerRect;
+ // FIXME: This seems like the wrong place to set this
+ layer->setUsesLayerScissor(false);
+
// The layer and its descendants render on a new RenderSurface if any of
// these conditions hold:
// 1. The layer clips its descendants and its transform is not a simple translation.
@@ -694,7 +697,6 @@
TransformationMatrix layerOriginTransform = combinedTransform;
layerOriginTransform.translate3d(-0.5 * bounds.width(), -0.5 * bounds.height(), 0);
renderSurface->m_originTransform = layerOriginTransform;
- layer->setScissorRect(IntRect());
// The render surface scissor rect is the scissor rect that needs to
// be applied before drawing the render surface onto its containing
@@ -726,6 +728,8 @@
// Layers inherit the scissor rect from their parent.
layer->setScissorRect(layer->parent()->scissorRect());
+ if (layer->parent()->usesLayerScissor())
+ layer->setUsesLayerScissor(true);
layer->setTargetRenderSurface(layer->parent()->targetRenderSurface());
}
@@ -738,6 +742,7 @@
if (!layer->scissorRect().isEmpty())
scissor.intersect(layer->scissorRect());
layer->setScissorRect(scissor);
+ layer->setUsesLayerScissor(true);
}
}
@@ -973,12 +978,11 @@
return;
}
- setScissorToRect(layer->scissorRect());
-
+ if (layer->usesLayerScissor())
+ setScissorToRect(layer->scissorRect());
+ else
+ GLC(m_context.get(), m_context->disable(GraphicsContext3D::SCISSOR_TEST));
IntRect targetSurfaceRect = m_currentRenderSurface ? m_currentRenderSurface->contentRect() : m_defaultRenderSurface->contentRect();
- IntRect scissorRect = layer->scissorRect();
- if (!scissorRect.isEmpty())
- targetSurfaceRect.intersect(scissorRect);
// Check if the layer falls within the visible bounds of the page.
IntRect layerRect = layer->getDrawRect();
@@ -1014,11 +1018,11 @@
// Sets the scissor region to the given rectangle. The coordinate system for the
// scissorRect has its origin at the top left corner of the current visible rect.
-void LayerRendererChromium::setScissorToRect(const IntRect& requestedScissor)
+void LayerRendererChromium::setScissorToRect(const IntRect& scissorRect)
{
IntRect contentRect = (m_currentRenderSurface ? m_currentRenderSurface->m_contentRect : m_defaultRenderSurface->m_contentRect);
- const IntRect scissorRect = requestedScissor.isEmpty() ? contentRect : requestedScissor;
+ GLC(m_context.get(), m_context->enable(GraphicsContext3D::SCISSOR_TEST));
// The scissor coordinates must be supplied in viewport space so we need to offset
// by the relative position of the top left corner of the current render surface.
« no previous file with comments | « Source/WebCore/ChangeLog ('k') | Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698