summaryrefslogtreecommitdiffstats
path: root/package/cairo/cairo-1.8.10-directfb.patch
blob: 12a51ec5ebfd48ee8897ce69b0c306cb66f34bbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
diff --git a/src/cairo-directfb-surface.c b/src/cairo-directfb-surface.c
index bb02dbf..65f2d55 100644
--- a/src/cairo-directfb-surface.c
+++ b/src/cairo-directfb-surface.c
@@ -609,6 +609,8 @@ _cairo_directfb_surface_release_dest_image (void                  *abstract_surf
 		     surface->dfbsurface->Blit (surface->dfbsurface,
 						buffer, NULL,
 						image_rect->x, image_rect->y));
+
+    surface->dfbsurface->ReleaseSource (surface->dfbsurface);
     }
 
     cairo_surface_destroy (&image->base);
@@ -848,6 +850,9 @@ _directfb_finish_composite (cairo_directfb_surface_t   *dst,
                             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 */
 
@@ -1555,6 +1560,7 @@ _directfb_acquire_font_cache (cairo_directfb_surface_t     *surface,
 
 	    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;
@@ -1778,6 +1784,7 @@ _cairo_directfb_surface_show_glyphs (void                *abstract_dst,
     RUN_CLIPPED (dst, NULL,
 		 dst->dfbsurface->BatchBlit (dst->dfbsurface,
 					     cache->dfbsurface, rects, points, num));
+    dst->dfbsurface->ReleaseSource (dst->dfbsurface);
 
     return CAIRO_STATUS_SUCCESS;
 }