--- cairo-1.10.2/src/cairo-directfb-surface.c 2010-06-18 12:47:12.000000000 +0100 +++ cairo-1.10.2.mod/src/cairo-directfb-surface.c 2012-02-02 11:40:57.835273391 +0000 @@ -700,6 +700,7 @@ surface->dfbsurface->Blit (surface->dfbsurface, buffer, NULL, image_rect->x, image_rect->y); + surface->dfbsurface->ReleaseSource (surface->dfbsurface); } cairo_surface_destroy (&image->base); @@ -928,6 +929,9 @@ cairo_surface_attributes_t *src_attr) { _cairo_pattern_release_surface (src_pattern, src, src_attr); + + if (dst->dfbsurface) + dst->dfbsurface->ReleaseSource (dst->dfbsurface); } #endif /* DFB_COMPOSITE || DFB_COMPOSITE_TRAPEZOIDS */ @@ -1584,6 +1588,7 @@ new_cache->dfbsurface->Blit (new_cache->dfbsurface, cache->dfbsurface, NULL, 0, 0); + new_cache->dfbsurface->ReleaseSource (new_cache->dfbsurface); _directfb_destroy_font_cache (cache); scaled_font->surface_private = cache = new_cache; @@ -1809,6 +1814,7 @@ RUN_CLIPPED (dst, clip_region, NULL, dst->dfbsurface->BatchBlit (dst->dfbsurface, cache->dfbsurface, rects, points, num)); + dst->dfbsurface->ReleaseSource (dst->dfbsurface); return CAIRO_STATUS_SUCCESS; }