[cairo-commit] src/cairo-xcb-private.h src/cairo-xcb-surface.c src/cairo-xcb-surface-core.c src/cairo-xcb-surface-render.c

Bryce Harrington bryce at kemper.freedesktop.org
Mon Jul 7 03:53:21 PDT 2014


 src/cairo-xcb-private.h        |   15 +++++++++++++++
 src/cairo-xcb-surface-core.c   |    2 +-
 src/cairo-xcb-surface-render.c |    2 +-
 src/cairo-xcb-surface.c        |    4 ++--
 4 files changed, 19 insertions(+), 4 deletions(-)

New commits:
commit be62b1221169469c8923a5a1ec669761f5344c57
Author: Ravi Nanjundappa <nravi.n at samsung.com>
Date:   Wed Jul 2 14:13:58 2014 +0530

    xcb: make use of _cairo_surface_is_xcb to check for surface type
    
    Introduced a new inline function _cairo_surface_is_xcb() as similar to
    _cairo_surface_is_image() and used the same to check for xcb surface
    type
    
    Signed-off-by: Ravi Nanjundappa <nravi.n at samsung.com>

diff --git a/src/cairo-xcb-private.h b/src/cairo-xcb-private.h
index 5f04803..134100a 100644
--- a/src/cairo-xcb-private.h
+++ b/src/cairo-xcb-private.h
@@ -267,6 +267,21 @@ enum {
 
 cairo_private extern const cairo_surface_backend_t _cairo_xcb_surface_backend;
 
+/**
+ * _cairo_surface_is_xcb:
+ * @surface: a #cairo_surface_t
+ *
+ * Checks if a surface is an #cairo_xcb_surface_t
+ *
+ * Return value: %TRUE if the surface is an xcb surface
+ **/
+static inline cairo_bool_t
+_cairo_surface_is_xcb (const cairo_surface_t *surface)
+{
+    /* _cairo_surface_nil sets a NULL backend so be safe */
+    return surface->backend && surface->backend->type == CAIRO_SURFACE_TYPE_XCB;
+}
+
 cairo_private cairo_xcb_connection_t *
 _cairo_xcb_connection_get (xcb_connection_t *connection);
 
diff --git a/src/cairo-xcb-surface-core.c b/src/cairo-xcb-surface-core.c
index c608c9a..545fd28 100644
--- a/src/cairo-xcb-surface-core.c
+++ b/src/cairo-xcb-surface-core.c
@@ -406,7 +406,7 @@ _cairo_xcb_surface_pixmap (cairo_xcb_surface_t *target,
     if (pixmap != NULL && pixmap->screen == target->screen)
 	return (cairo_xcb_pixmap_t *) cairo_surface_reference (&pixmap->base);
 
-    if (source->type == CAIRO_SURFACE_TYPE_XCB &&
+    if (_cairo_surface_is_xcb(source) &&
 	((cairo_xcb_surface_t *) source)->screen == target->screen)
     {
 	cairo_xcb_surface_t *xcb_source = (cairo_xcb_surface_t *) source;
diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c
index 75455e5..3f2fc43 100644
--- a/src/cairo-xcb-surface-render.c
+++ b/src/cairo-xcb-surface-render.c
@@ -1154,7 +1154,7 @@ _cairo_xcb_surface_picture (cairo_xcb_surface_t *target,
 
     if (source->type == CAIRO_SURFACE_TYPE_XCB)
     {
-	if (source->backend->type == CAIRO_SURFACE_TYPE_XCB) {
+	if (_cairo_surface_is_xcb(source)) {
 	    cairo_xcb_surface_t *xcb = (cairo_xcb_surface_t *) source;
 	    if (xcb->screen == target->screen && xcb->fallback == NULL) {
 		picture = _copy_to_picture ((cairo_xcb_surface_t *) source);
diff --git a/src/cairo-xcb-surface.c b/src/cairo-xcb-surface.c
index c900edc..02e7a19 100644
--- a/src/cairo-xcb-surface.c
+++ b/src/cairo-xcb-surface.c
@@ -1432,7 +1432,7 @@ cairo_xcb_surface_set_size (cairo_surface_t *abstract_surface,
     }
 
 
-    if (abstract_surface->type != CAIRO_SURFACE_TYPE_XCB) {
+    if ( !_cairo_surface_is_xcb(abstract_surface)) {
 	_cairo_surface_set_error (abstract_surface,
 				  _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH));
 	return;
@@ -1486,7 +1486,7 @@ cairo_xcb_surface_set_drawable (cairo_surface_t *abstract_surface,
     }
 
 
-    if (abstract_surface->type != CAIRO_SURFACE_TYPE_XCB) {
+    if ( !_cairo_surface_is_xcb(abstract_surface)) {
 	_cairo_surface_set_error (abstract_surface,
 				  _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH));
 	return;


More information about the cairo-commit mailing list