[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