[SCM] WebKit Debian packaging branch, debian/experimental, updated. debian/1.3.8-1-1049-g2e11a8e
alex at webkit.org
alex at webkit.org
Fri Jan 21 15:14:47 UTC 2011
The following commit has been merged in the debian/experimental branch:
commit 2a7a4c9880d8debfd1aa9ae71294c7df06dbbce8
Author: alex at webkit.org <alex at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Jan 10 17:56:29 2011 +0000
2011-01-10 Alejandro G. Castro <alex at igalia.com>
Reviewed by Martin Robinson.
[cairo] Rendering a lot of arcs on top of each other causes time
outs in some tests
https://bugs.webkit.org/show_bug.cgi?id=50869
We avoid the situation where we have to render the same arc
multiple times over itself. Now it renders just one oval and
moves to the end angle.
* platform/graphics/cairo/PathCairo.cpp:
(WebCore::Path::addArc):
2011-01-10 Alejandro G. Castro <alex at igalia.com>
Reviewed by Martin Robinson.
[cairo] Rendering a lot of arcs on top of each other causes time
outs in some tests
https://bugs.webkit.org/show_bug.cgi?id=50869
Unskip canvas-largedraws.html after improving the performance for
big angles.
* platform/gtk/Skipped:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75381 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 6115740..a9084f8 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,16 @@
+2011-01-10 Alejandro G. Castro <alex at igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [cairo] Rendering a lot of arcs on top of each other causes time
+ outs in some tests
+ https://bugs.webkit.org/show_bug.cgi?id=50869
+
+ Unskip canvas-largedraws.html after improving the performance for
+ big angles.
+
+ * platform/gtk/Skipped:
+
2011-01-10 Adam Roben <aroben at apple.com>
Add some new tests to the Windows Skipped file
diff --git a/LayoutTests/platform/gtk/Skipped b/LayoutTests/platform/gtk/Skipped
index ff91ac8..a08f80f 100644
--- a/LayoutTests/platform/gtk/Skipped
+++ b/LayoutTests/platform/gtk/Skipped
@@ -5581,11 +5581,6 @@ fast/dom/StyleSheet/detached-style-pi-2.xhtml
fast/dom/StyleSheet/detached-style-pi.xhtml
fast/dom/StyleSheet/detached-style.html
-# The test times out, we have to improve the performance of the
-# rendering in these situations to
-# https://bugs.webkit.org/show_bug.cgi?id=50869
-fast/canvas/canvas-largedraws.html
-
# https://bugs.webkit.org/show_bug.cgi?id=50886
fast/dom/Window/timer-resume-on-navigation-back.html
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index a1cd5e7..60465e7 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,18 @@
+2011-01-10 Alejandro G. Castro <alex at igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [cairo] Rendering a lot of arcs on top of each other causes time
+ outs in some tests
+ https://bugs.webkit.org/show_bug.cgi?id=50869
+
+ We avoid the situation where we have to render the same arc
+ multiple times over itself. Now it renders just one oval and
+ moves to the end angle.
+
+ * platform/graphics/cairo/PathCairo.cpp:
+ (WebCore::Path::addArc):
+
2011-01-10 Carlos Garcia Campos <cgarcia at igalia.com>
Reviewed by Martin Robinson.
diff --git a/Source/WebCore/platform/graphics/cairo/PathCairo.cpp b/Source/WebCore/platform/graphics/cairo/PathCairo.cpp
index 03f1d10..981fdcd 100644
--- a/Source/WebCore/platform/graphics/cairo/PathCairo.cpp
+++ b/Source/WebCore/platform/graphics/cairo/PathCairo.cpp
@@ -5,6 +5,7 @@
2005, 2007 Apple Inc. All Rights reserved.
2007 Alp Toker <alp at atoker.com>
2008 Dirk Schulze <krit at webkit.org>
+ 2011 Igalia S.L.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -143,18 +144,30 @@ void Path::addBezierCurveTo(const FloatPoint& controlPoint1, const FloatPoint& c
controlPoint3.x(), controlPoint3.y());
}
-void Path::addArc(const FloatPoint& p, float r, float sa, float ea, bool anticlockwise)
+void Path::addArc(const FloatPoint& p, float r, float startAngle, float endAngle, bool anticlockwise)
{
// http://bugs.webkit.org/show_bug.cgi?id=16449
// cairo_arc() functions hang or crash when passed inf as radius or start/end angle
- if (!isfinite(r) || !isfinite(sa) || !isfinite(ea))
+ if (!isfinite(r) || !isfinite(startAngle) || !isfinite(endAngle))
return;
cairo_t* cr = platformPath()->context();
- if (anticlockwise)
- cairo_arc_negative(cr, p.x(), p.y(), r, sa, ea);
- else
- cairo_arc(cr, p.x(), p.y(), r, sa, ea);
+ float sweep = endAngle - startAngle;
+ const float twoPI = 2 * M_PI;
+ if ((sweep <= -twoPI || sweep >= twoPI)
+ && ((anticlockwise && (endAngle < startAngle)) || (!anticlockwise && (startAngle < endAngle)))) {
+ if (anticlockwise)
+ cairo_arc_negative(cr, p.x(), p.y(), r, startAngle, startAngle - twoPI);
+ else
+ cairo_arc(cr, p.x(), p.y(), r, startAngle, startAngle + twoPI);
+ cairo_new_sub_path(cr);
+ cairo_arc(cr, p.x(), p.y(), r, endAngle, endAngle);
+ } else {
+ if (anticlockwise)
+ cairo_arc_negative(cr, p.x(), p.y(), r, startAngle, endAngle);
+ else
+ cairo_arc(cr, p.x(), p.y(), r, startAngle, endAngle);
+ }
}
void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius)
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list