d3d1x: add missing memory barrier
authorLuca Barbieri <luca@luca-barbieri.com>
Wed, 22 Sep 2010 11:21:13 +0000 (13:21 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Wed, 22 Sep 2010 11:21:13 +0000 (13:21 +0200)
src/gallium/state_trackers/d3d1x/d3d1xstutil/include/d3d1xstutil.h

index 19ac53e6bd37bef1b1bb8c4b9e85cfb170d5d2b3..55cbd4a7199dcbeae15c83b312e9dc76eddde41c 100644 (file)
@@ -363,8 +363,12 @@ struct dual_refcnt_t
        unsigned nonatomic_release()
        {
                //printf("%p nonatomic_release at %u %u\n", this, atomic_refcnt, nonatomic_refcnt);
-               if(!--nonatomic_refcnt && !atomic_refcnt && is_zero())
-                       return 0;
+               if(!--nonatomic_refcnt)
+               {
+                       __sync_synchronize();
+                       if(!atomic_refcnt && is_zero())
+                               return 0;
+               }
                return 1;
        }
 };