summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-07-07 18:39:54 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-07-07 19:02:32 +0300
commit4b5175ff8ab044abc8635d3778364dd6001dcf8e (patch)
tree7b4fa921b8197050d73ab33811a1e1c17491d260
parent6968538b318078ded28ba79dd03a76e395ad5150 (diff)
downloadmetacity-4b5175ff8ab044abc8635d3778364dd6001dcf8e.tar.gz
libmetacity: fix gradients
-rw-r--r--libmetacity/meta-gradient-spec.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/libmetacity/meta-gradient-spec.c b/libmetacity/meta-gradient-spec.c
index bb6a98de..70affdd6 100644
--- a/libmetacity/meta-gradient-spec.c
+++ b/libmetacity/meta-gradient-spec.c
@@ -74,17 +74,23 @@ create_cairo_pattern_from_gradient_spec (const MetaGradientSpec *spec,
meta_color_spec_render (tmp->data, context, &color);
if (alpha_spec != NULL)
- cairo_pattern_add_color_stop_rgba (pattern, i / (gfloat) n_colors,
+ cairo_pattern_add_color_stop_rgba (pattern, i / (gfloat) (n_colors - 1),
color.red, color.green, color.blue,
- alpha_spec->alphas[i]);
+ alpha_spec->alphas[i] / 255.0);
else
- cairo_pattern_add_color_stop_rgb (pattern, i / (gfloat) n_colors,
+ cairo_pattern_add_color_stop_rgb (pattern, i / (gfloat) (n_colors - 1),
color.red, color.green, color.blue);
tmp = tmp->next;
++i;
}
+ if (cairo_pattern_status (pattern) != CAIRO_STATUS_SUCCESS)
+ {
+ cairo_pattern_destroy (pattern);
+ return NULL;
+ }
+
return pattern;
}