summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/nine/iunknown.h
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2016-10-26 23:15:34 +0200
committerAxel Davy <[email protected]>2016-12-20 23:44:22 +0100
commit0a5252d25b3e65c29c3c231cec46fed8ca7dedb0 (patch)
treedd9e47e5f217ae93e52046484a6391d989353b8c /src/gallium/state_trackers/nine/iunknown.h
parentb748b8fd8619ab412517f859dbf9a42b62ef6309 (diff)
st/nine: Use atomics for nine_bind
nine_bind didn't need atomics up to now, because it's use what always within a protected mutex. We need to use atomics because with the next patches several threads may use nine_bind. Signed-off-by: Axel Davy <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/nine/iunknown.h')
-rw-r--r--src/gallium/state_trackers/nine/iunknown.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/nine/iunknown.h b/src/gallium/state_trackers/nine/iunknown.h
index 63b16bd7cc8..d357aad9c6f 100644
--- a/src/gallium/state_trackers/nine/iunknown.h
+++ b/src/gallium/state_trackers/nine/iunknown.h
@@ -25,6 +25,7 @@
#include "pipe/p_compiler.h"
+#include "util/u_atomic.h"
#include "util/u_memory.h"
#include "guid.h"
@@ -127,7 +128,7 @@ NineUnknown_Destroy( struct NineUnknown *This )
static inline UINT
NineUnknown_Bind( struct NineUnknown *This )
{
- UINT b = ++This->bind;
+ UINT b = p_atomic_inc_return(&This->bind);
assert(b);
if (b == 1 && This->container) {
if (This->container != NineUnknown(This->device))
@@ -139,7 +140,7 @@ NineUnknown_Bind( struct NineUnknown *This )
static inline UINT
NineUnknown_Unbind( struct NineUnknown *This )
{
- UINT b = --This->bind;
+ UINT b = p_atomic_dec_return(&This->bind);
if (!b) {
if (This->container) {
if (This->container != NineUnknown(This->device))