[PATCH 26/51] drm: add helper for typecasting from abstract device to drm device type
"Enrico Weigelt, metux IT consult" <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> --- src/drm/cairo-drm-private.h | 9 +++++++++ src/drm/cairo-drm.c | 12 ++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/drm/cairo-drm-private.h b/src/drm/cairo-drm-private.h index 5e8d639..e6d9196 100644 --- a/src/drm/cairo-drm-private.h +++ b/src/drm/cairo-drm-private.h @@ -128,6 +128,15 @@ struct _cairo_drm_device { cairo_drm_device_t *next, *prev; }; +static inline cairo_drm_device_t* +cairo_abstract_device_cast_drm(cairo_device_t* dev) +{ + return cairo_container_of( + dev, + cairo_drm_device_t, + base); +} + typedef struct _cairo_drm_surface { cairo_surface_t base; diff --git a/src/drm/cairo-drm.c b/src/drm/cairo-drm.c index 661e181..47741a3 100644 --- a/src/drm/cairo-drm.c +++ b/src/drm/cairo-drm.c @@ -63,7 +63,7 @@ get_udev_property(struct udev_device *device, const char *name) static void _device_flush (void *abstract_device) { - cairo_drm_device_t *device = abstract_device; + cairo_drm_device_t *device = cairo_abstract_device_cast_drm(abstract_device); device->device.flush (device); } @@ -71,7 +71,7 @@ _device_flush (void *abstract_device) static void _device_finish (void *abstract_device) { - cairo_drm_device_t *device = abstract_device; + cairo_drm_device_t *device = cairo_abstract_device_cast_drm(abstract_device); CAIRO_MUTEX_LOCK (_cairo_drm_device_mutex); if (device->prev != NULL) @@ -93,7 +93,7 @@ _device_finish (void *abstract_device) static void _device_destroy (void *abstract_device) { - cairo_drm_device_t *device = abstract_device; + cairo_drm_device_t *device = cairo_abstract_device_cast_drm(abstract_device); device->device.destroy (device); } @@ -344,7 +344,7 @@ _cairo_drm_device_reset_static_data (void) int cairo_drm_device_get_fd (cairo_device_t *abstract_device) { - cairo_drm_device_t *device = (cairo_drm_device_t *) abstract_device; + cairo_drm_device_t *device = cairo_abstract_device_cast_drm(abstract_device); if (device->base.status) return -1; @@ -362,7 +362,7 @@ _cairo_drm_device_fini (cairo_drm_device_t *device) void cairo_drm_device_throttle (cairo_device_t *abstract_device) { - cairo_drm_device_t *device = (cairo_drm_device_t *) abstract_device; + cairo_drm_device_t *device = cairo_abstract_device_cast_drm(abstract_device); cairo_status_t status; if (unlikely (device->base.status)) @@ -380,7 +380,7 @@ cairo_bool_t _cairo_drm_size_is_valid (cairo_device_t *abstract_device, int width, int height) { - cairo_drm_device_t *device = (cairo_drm_device_t *) abstract_device; + cairo_drm_device_t *device = cairo_abstract_device_cast_drm(abstract_device); if (unlikely (device->base.status)) return FALSE; -- 2.6.4.442.g545299f -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo