From aba88b7ed7a1346adada9532aed9633617eb3b6d Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Wed, 18 Feb 2009 18:12:31 +0100 Subject: gallium: Add pipe_transfer_reference(). --- src/gallium/include/pipe/p_inlines.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/gallium/include/pipe/p_inlines.h b/src/gallium/include/pipe/p_inlines.h index 76460d27243..ffbe2d7612a 100644 --- a/src/gallium/include/pipe/p_inlines.h +++ b/src/gallium/include/pipe/p_inlines.h @@ -65,6 +65,31 @@ pipe_surface_reference(struct pipe_surface **ptr, struct pipe_surface *surf) } +/** + * \sa pipe_surface_reference + */ +static INLINE void +pipe_transfer_reference(struct pipe_transfer **ptr, struct pipe_transfer *trans) +{ + /* bump the refcount first */ + if (trans) { + assert(trans->refcount); + trans->refcount++; + } + + if (*ptr) { + struct pipe_screen *screen; + assert((*ptr)->refcount); + assert((*ptr)->texture); + screen = (*ptr)->texture->screen; + screen->tex_transfer_release( screen, ptr ); + assert(!*ptr); + } + + *ptr = trans; +} + + /** * \sa pipe_surface_reference */ -- cgit v1.2.3