[PATCH 39/41] drm/i965: fixed _cairo_clip_*() calls

"Enrico Weigelt, metux IT consult" <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
With commit b132fae5e843c329d1414d1a65b2e8d66b99852f, the memory
handling of clip objects has changed - they're now managed in an
object pool. Therefore consumers need to be updated.

Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]>
---
 src/drm/cairo-drm-i965-glyphs.c  | 16 ++++------------
 src/drm/cairo-drm-i965-surface.c | 24 ++++++++++++------------
 2 files changed, 16 insertions(+), 24 deletions(-)

diff --git a/src/drm/cairo-drm-i965-glyphs.c b/src/drm/cairo-drm-i965-glyphs.c
index c66a63d..8c08a0f 100644
--- a/src/drm/cairo-drm-i965-glyphs.c
+++ b/src/drm/cairo-drm-i965-glyphs.c
@@ -230,8 +230,7 @@ i965_surface_glyphs (void			*abstract_surface,
     i965_device_t *device;
     i965_glyphs_t glyphs;
     cairo_composite_rectangles_t extents;
-    cairo_clip_t local_clip;
-    cairo_bool_t have_clip = FALSE;
+    cairo_clip_t *local_clip;
     cairo_bool_t overlap;
     cairo_region_t *clip_region = NULL;
     intel_bo_t *last_bo = NULL;
@@ -255,14 +254,8 @@ i965_surface_glyphs (void			*abstract_surface,
     if (clip != NULL && _cairo_clip_contains_rectangle (clip, &extents.mask))
 	clip = NULL;
 
-    if (clip != NULL && extents.is_bounded) {
-	clip = _cairo_clip_init_copy (&local_clip, clip);
-	status = _cairo_clip_rectangle (clip, &extents.bounded);
-	if (unlikely (status))
-	    return status;
-
-	have_clip = TRUE;
-    }
+    if (clip != NULL && extents.is_bounded)
+	clip = local_clip = _cairo_clip_copy_intersect_rectangle (clip, &extents.bounded);
 
     if (overlap || ! extents.is_bounded) {
 	cairo_format_t format;
@@ -497,8 +490,7 @@ i965_surface_glyphs (void			*abstract_surface,
 	cairo_surface_destroy (&mask->intel.drm.base);
     }
 
-    if (have_clip)
-	_cairo_clip_fini (&local_clip);
+    _cairo_clip_reset (local_clip);
 
     return status;
 }
diff --git a/src/drm/cairo-drm-i965-surface.c b/src/drm/cairo-drm-i965-surface.c
index ec7b595..6870e79 100644
--- a/src/drm/cairo-drm-i965-surface.c
+++ b/src/drm/cairo-drm-i965-surface.c
@@ -1118,14 +1118,14 @@ i965_surface_paint (void			*abstract_dst,
 	clip = NULL;
 
     if (clip != NULL) {
-	clip = _cairo_clip_init_copy (&local_clip, clip);
+	clip = _cairo_clip_copy (&local_clip);
 	have_clip = TRUE;
     }
 
     status = _cairo_clip_to_boxes (&clip, &extents, &clip_boxes, &num_boxes);
     if (unlikely (status)) {
 	if (have_clip)
-	    _cairo_clip_fini (&local_clip);
+	    _cairo_clip_reset (&local_clip);
 
 	return status;
     }
@@ -1138,7 +1138,7 @@ i965_surface_paint (void			*abstract_dst,
 	free (clip_boxes);
 
     if (have_clip)
-	_cairo_clip_fini (&local_clip);
+	_cairo_clip_reset (&local_clip);
 
     return status;
 }
@@ -1171,10 +1171,10 @@ i965_surface_mask (void				*abstract_dst,
 	clip = NULL;
 
     if (clip != NULL && extents.is_bounded) {
-	clip = _cairo_clip_init_copy (&local_clip, clip);
+	clip = _cairo_clip_copy (&local_clip);
 	status = _cairo_clip_rectangle (clip, &extents.bounded);
 	if (unlikely (status)) {
-	    _cairo_clip_fini (&local_clip);
+	    _cairo_clip_reset (&local_clip);
 	    return status;
 	}
 
@@ -1243,7 +1243,7 @@ i965_surface_mask (void				*abstract_dst,
   err_shader:
     i965_shader_fini (&shader);
     if (have_clip)
-	_cairo_clip_fini (&local_clip);
+	_cairo_clip_reset (&local_clip);
 
     return status;
 }
@@ -1314,14 +1314,14 @@ i965_surface_stroke (void			*abstract_dst,
 	clip = NULL;
 
     if (clip != NULL) {
-	clip = _cairo_clip_init_copy (&local_clip, clip);
+	clip = _cairo_clip_copy (&local_clip);
 	have_clip = TRUE;
     }
 
     status = _cairo_clip_to_boxes (&clip, &extents, &clip_boxes, &num_boxes);
     if (unlikely (status)) {
 	if (have_clip)
-	    _cairo_clip_fini (&local_clip);
+	    _cairo_clip_reset (&local_clip);
 
 	return status;
     }
@@ -1384,7 +1384,7 @@ CLEANUP_BOXES:
 	free (clip_boxes);
 
     if (have_clip)
-	_cairo_clip_fini (&local_clip);
+	_cairo_clip_reset (&local_clip);
 
     return status;
 }
@@ -1420,14 +1420,14 @@ i965_surface_fill (void			*abstract_dst,
 	clip = NULL;
 
     if (clip != NULL) {
-	clip = _cairo_clip_init_copy (&local_clip, clip);
+	clip = _cairo_clip_copy (&local_clip);
 	have_clip = TRUE;
     }
 
     status = _cairo_clip_to_boxes (&clip, &extents, &clip_boxes, &num_boxes);
     if (unlikely (status)) {
 	if (have_clip)
-	    _cairo_clip_fini (&local_clip);
+	    _cairo_clip_reset (&local_clip);
 
 	return status;
     }
@@ -1487,7 +1487,7 @@ CLEANUP_BOXES:
 	free (clip_boxes);
 
     if (have_clip)
-	_cairo_clip_fini (&local_clip);
+	_cairo_clip_reset (&local_clip);
 
     return status;
 }
-- 
2.6.4.442.g545299f

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.