summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-10-13 23:17:57 -0700
committerBenjamin Otte <otte@redhat.com>2011-10-15 00:06:22 -0700
commit90501e6c5b0e4aa911fad1c02adb3efc90b8582a (patch)
tree29e1527c01caed6f0a23bb4aca5405787dd8be6f
parent239ca50fa8020d19b338eb72128b34390f335132 (diff)
colored: Don't use the get_cache() function
-rw-r--r--libgame/game-colored.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/libgame/game-colored.c b/libgame/game-colored.c
index 5d66114..106b8cb 100644
--- a/libgame/game-colored.c
+++ b/libgame/game-colored.c
@@ -127,17 +127,20 @@ static void
game_colored_draw (GameGraphic *graphic, cairo_t *cr, const GameRectangle *area)
{
GameColored *colored = GAME_COLORED (graphic);
+ cairo_pattern_t *mask;
if (colored->base)
game_graphic_draw_area (colored->base, cr, area);
+
game_color_as_cairo_source (cr, &colored->color);
if (colored->mask) {
- cairo_pattern_t *mask = game_graphic_get_cache (colored->mask, cr);
- if (mask) {
- cairo_mask (cr, mask);
- } else {
- cairo_paint (cr);
- }
+ game_rectangle_path (cr, &colored->mask->rect);
+ cairo_clip (cr);
+ cairo_push_group (cr);
+ game_graphic_draw (colored->mask, cr);
+ mask = cairo_pop_group (cr);
+ cairo_mask (cr, mask);
+ cairo_pattern_destroy (mask);
} else {
cairo_paint (cr);
}