From 0bfe6c1e5242d27df3b5063fb873fa1d3b0c283d Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 11 Jul 2007 14:17:34 +0000 Subject: [PATCH] no more crash in splitvertical. i think i changed the size of the middle gradient too. it's always 1px now unless the texture is very small, then it can be 0. if theres a discrepency, the bottom color gets the extra pixel. --- render/gradient.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/render/gradient.c b/render/gradient.c index 41514ac..4cd3c18 100644 --- a/render/gradient.c +++ b/render/gradient.c @@ -431,15 +431,24 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h) VARS(y2); VARS(y3); - - y1sz = MAX(h/2 - 1, 1); - /* setup to get the colors _in between_ these other 2 */ - y2sz = (h < 3 ? 0 : (h % 2 ? 3 : 2)); - y3sz = MAX(h/2 - 1, 0); + /* if h <= 5, then a 0 or 1px middle gradient. + if h > 5, then always a 1px middle gradient. + */ + if (h <= 5) { + y1sz = MAX(h/2, 0); + y2sz = (h < 3 ? 0 : h % 2); + y3sz = MAX(h/2, 1); + } + else { + y1sz = h/2 - (1 - (h % 2)); + y2sz = 1; + y3sz = h/2; + } SETUP(y1, sf->split_primary, sf->primary, y1sz); if (y2sz) { - SETUP(y2, sf->primary, sf->secondary, y2sz); + /* setup to get the colors _in between_ these other 2 */ + SETUP(y2, sf->primary, sf->secondary, y2sz + 2); NEXT(y2); /* skip the first one, its the same as the last of y1 */ } SETUP(y3, sf->secondary, sf->split_secondary, y3sz); -- 1.9.1