[PATCH] skia : Add Debug support for skia backend

Ravi Nanjundappa <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Enable the DEBUG support for skia backend to provide more
descriptive information on the unexpected operational behaviours.

Signed-off-by: Ravi Nanjundappa <[email protected]>
---
 src/cairo-skia-surface.cpp |   28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/cairo-skia-surface.cpp b/src/cairo-skia-surface.cpp
index 4cf8b7f..92bdc32 100644
--- a/src/cairo-skia-surface.cpp
+++ b/src/cairo-skia-surface.cpp
@@ -85,13 +85,20 @@
 # define CAIRO_INT_STATUS_SUCCESS ((cairo_int_status_t) CAIRO_STATUS_SUCCESS)
 #endif
 
-#define CAIRO_MAYBE_UNSUPPORTED CAIRO_INT_STATUS_UNSUPPORTED
-//#define CAIRO_MAYBE_UNSUPPORTED _skia_unsupported ()
+#define DEBUG_SKIA 0
+
+#if DEBUG_SKIA 
+#define UNSUPPORTED(reason) ({ \
+    fprintf (stderr, \
+	     "cairo-skia : hit unsupported operation in %s(), line %d: %s\n", \
+	     __FUNCTION__, __LINE__, reason); \
+    return CAIRO_INT_STATUS_UNSUPPORTED; \
+})
+#else
+#define UNSUPPORTED(reason) ({ \
+    return CAIRO_INT_STATUS_UNSUPPORTED; \
+})#endif
 
-static cairo_int_status_t _skia_unsupported () {
-    printf ("unsupported!\n");
-    return CAIRO_INT_STATUS_UNSUPPORTED;
-}
 
 typedef struct cairo_skia_surface {
     cairo_surface_t base;
@@ -563,8 +570,7 @@ _cairo_skia_surface_create_similar (void *asurface,
     if (! format_to_sk_config (_cairo_format_from_content (content),
 			       config, opaque))
     {
-	_skia_unsupported ();
-	return NULL;
+	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT));
     }
 
     return &_cairo_skia_surface_create_internal (config, opaque,
@@ -802,7 +808,7 @@ _cairo_skia_surface_paint (void *asurface,
 	shader = pattern_to_sk_shader (surface, source, &image, &image_extra);
 
     if (!bitmap && !shader)
-	return CAIRO_MAYBE_UNSUPPORTED;
+	return UNSUPPORTED("pattern to bitmap and shader conversion");
 
     SkPaint paint;
     paint.setFilterBitmap (pattern_filter_to_sk (source));
@@ -859,7 +865,7 @@ _cairo_skia_surface_stroke (void *asurface,
 	SkShader *shader = pattern_to_sk_shader (surface,
 						 source, &image, &image_extra);
 	if (shader == NULL)
-	    return CAIRO_MAYBE_UNSUPPORTED;
+	    return UNSUPPORTED("pattern to shader conversion");
 
 	paint.setShader (shader);
 	shader->unref ();
@@ -962,7 +968,7 @@ _cairo_skia_surface_fill (void *asurface,
 	SkShader *shader = pattern_to_sk_shader (surface,
 						 source, &image, &image_extra);
 	if (shader == NULL)
-	    return CAIRO_MAYBE_UNSUPPORTED;
+	    return UNSUPPORTED("pattern to shader conversion");
 
 	paint.setShader (shader);
 	shader->unref ();
-- 
1.7.9.5

-- 
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.