Commit 82bfc00c authored by mitz@apple.com's avatar mitz@apple.com

<rdar://problem/12592716> REGRESSION (r132545): With full-page accelerated drawing, a

reproducible hang occurs at <http://www.cbsnews.com/stories/2010/01/24/ftn/main6136386.shtml>.

Reviewed by Anders Carlsson.

Work around <rdar://problem/12584492> by limiting the scope of the fix for <http://webkit.org/b/100413>.

* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::clipOut): Reverted to using CGContextGetClipBoundingBox() rather
than CGRectInfinite when the context is accelerated and has a transform that is not just
a translation or a scale.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@132852 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent e2c4789d
2012-10-29 Dan Bernstein <mitz@apple.com>
<rdar://problem/12592716> REGRESSION (r132545): With full-page accelerated drawing, a
reproducible hang occurs at <http://www.cbsnews.com/stories/2010/01/24/ftn/main6136386.shtml>.
Reviewed by Anders Carlsson.
Work around <rdar://problem/12584492> by limiting the scope of the fix for <http://webkit.org/b/100413>.
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::clipOut): Reverted to using CGContextGetClipBoundingBox() rather
than CGRectInfinite when the context is accelerated and has a transform that is not just
a translation or a scale.
2012-10-29 Rob Buis <rbuis@rim.com>
[BlackBerry] Simplify AuthenticationChallengeManager::instance
......@@ -1060,7 +1060,12 @@ void GraphicsContext::clipOut(const IntRect& rect)
if (paintingDisabled())
return;
CGRect rects[2] = { CGRectInfinite, rect };
// FIXME: Using CGRectInfinite is much faster than getting the clip bounding box. However, due
// to <rdar://problem/12584492>, CGRectInfinite can't be used with an accelerated context that
// has certain transforms that aren't just a translation or a scale.
const AffineTransform& ctm = getCTM();
bool canUseCGRectInfinite = !isAcceleratedContext() || (!ctm.b() && !ctm.c());
CGRect rects[2] = { canUseCGRectInfinite ? CGRectInfinite : CGContextGetClipBoundingBox(platformContext()), rect };
CGContextBeginPath(platformContext());
CGContextAddRects(platformContext(), rects, 2);
CGContextEOClip(platformContext());
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment