[cairo] [PATCH] skia : Add Debug support for skia backend

Ravi Nanjundappa nravi.n at samsung.com
Thu Jul 10 03:44:46 PDT 2014


Enable the DEBUG support for skia backend to provide more
descriptive information on the unexpected operational behaviours.

Signed-off-by: Ravi Nanjundappa <nravi.n at samsung.com>
---
 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



More information about the cairo mailing list