pixman: Branch 'master'

Andrea Canciani ranma42 at kemper.freedesktop.org
Wed Jan 12 13:07:19 PST 2011


 pixman/pixman-radial-gradient.c |   20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

New commits:
commit 29439bd7724031504e965ffe5b366baaeeae07d8
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Tue Nov 23 11:37:54 2010 +0100

    Improve handling of tangent circles
    
    When b is 0, avoid the division by zero and just return transparent
    black.
    
    When the solution t would have an invalid radius (negative or outside
    [0,1] for none-extended gradients), return transparent black.

diff --git a/pixman/pixman-radial-gradient.c b/pixman/pixman-radial-gradient.c
index b595ba7..7b92307 100644
--- a/pixman/pixman-radial-gradient.c
+++ b/pixman/pixman-radial-gradient.c
@@ -96,8 +96,24 @@ radial_compute_color (double                    a,
 
     if (a == 0)
     {
-	return _pixman_gradient_walker_pixel (walker,
-					      pixman_fixed_1 / 2 * c / b);
+	double t;
+
+	if (b == 0)
+	    return 0;
+
+	t = pixman_fixed_1 / 2 * c / b;
+	if (repeat == PIXMAN_REPEAT_NONE)
+	{
+	    if (0 <= t && t <= pixman_fixed_1)
+		return _pixman_gradient_walker_pixel (walker, t);
+	}
+	else
+	{
+	    if (t * dr > mindr)
+		return _pixman_gradient_walker_pixel (walker, t);
+	}
+
+	return 0;
     }
 
     det = fdot (b, a, 0, b, -c, 0);


More information about the xorg-commit mailing list