--- 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;
 }
