From: Michel Dänzer Date: Wed, 18 Feb 2009 17:12:31 +0000 (+0100) Subject: gallium: Add pipe_transfer_reference(). X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aba88b7ed7a1346adada9532aed9633617eb3b6d;p=mesa.git gallium: Add pipe_transfer_reference(). --- 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 */