Title: [132852] trunk/Source/WebCore
- Revision
- 132852
- Author
- m...@apple.com
- Date
- 2012-10-29 15:35:50 -0700 (Mon, 29 Oct 2012)
Log Message
<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.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (132851 => 132852)
--- trunk/Source/WebCore/ChangeLog 2012-10-29 21:53:53 UTC (rev 132851)
+++ trunk/Source/WebCore/ChangeLog 2012-10-29 22:35:50 UTC (rev 132852)
@@ -1,3 +1,17 @@
+2012-10-29 Dan Bernstein <m...@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 <rb...@rim.com>
[BlackBerry] Simplify AuthenticationChallengeManager::instance
Modified: trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp (132851 => 132852)
--- trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp 2012-10-29 21:53:53 UTC (rev 132851)
+++ trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp 2012-10-29 22:35:50 UTC (rev 132852)
@@ -1060,7 +1060,12 @@
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());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes