From: Marek Olšák <[email protected]>
Tested-by: Dieter Nützel <[email protected]>
---
src/gallium/auxiliary/util/u_inlines.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/gallium/auxiliary/util/u_inlines.h
b/src/gallium/auxiliary/util/u_inlines.h
index 83013df53f1..820d3080a5c 100644
--- a/src/gallium/auxiliary/util/u_inlines.h
+++ b/src/gallium/auxiliary/util/u_inlines.h
@@ -72,28 +72,29 @@ pipe_is_referenced(struct pipe_reference *src)
static inline boolean
pipe_reference_described(struct pipe_reference *dst,
struct pipe_reference *src,
debug_reference_descriptor get_desc)
{
boolean destroy = FALSE;
if (dst != src) {
/* bump the src.count first */
if (src) {
- assert(pipe_is_referenced(src));
- p_atomic_inc(&src->count);
+ MAYBE_UNUSED int count = p_atomic_inc_return(&src->count);
+ assert(count != 1); /* src had to be referenced */
debug_reference(src, get_desc, 1);
}
if (dst) {
- assert(pipe_is_referenced(dst));
- if (p_atomic_dec_zero(&dst->count))
+ int count = p_atomic_dec_return(&dst->count);
+ assert(count != -1); /* dst had to be referenced */
+ if (!count)
destroy = TRUE;
debug_reference(dst, get_desc, -1);
}
}
return destroy;
}
static inline boolean
--
2.17.1
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev