summaryrefslogtreecommitdiff
path: root/libmetacity
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 18:39:54 +0300
commitfc1a21eafe14cd6c675d7a04da5a4fc7654565a1 (patch)
tree83de1e6c1eb8fdc251592050feb26fcdd8056727 /libmetacity
parent127638caa99b019551cc0f6bb6052c276de4926a (diff)
downloadmetacity-fc1a21eafe14cd6c675d7a04da5a4fc7654565a1.tar.gz
libmetacity: fix gradients
Diffstat (limited to 'libmetacity')
-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;
}