Fix race condition when locking/unlocking pixels.
authordjsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 6 Aug 2013 12:19:38 +0000 (12:19 +0000)
committerdjsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 6 Aug 2013 12:19:38 +0000 (12:19 +0000)
R=reed@google.com

Review URL: https://codereview.chromium.org/22235002

git-svn-id: http://skia.googlecode.com/svn/trunk@10556 2bbb7eff-a529-9590-31e7-b0007b416f81

src/core/SkBitmap.cpp

index 2635e13..9a116df 100644 (file)
@@ -340,7 +340,7 @@ SkPixelRef* SkBitmap::setPixelRef(SkPixelRef* pr, size_t offset) {
 }
 
 void SkBitmap::lockPixels() const {
-    if (NULL != fPixelRef && 1 == ++fPixelLockCount) {
+    if (NULL != fPixelRef && 0 == sk_atomic_inc(&fPixelLockCount)) {
         fPixelRef->lockPixels();
         this->updatePixelsFromRef();
     }
@@ -350,7 +350,7 @@ void SkBitmap::lockPixels() const {
 void SkBitmap::unlockPixels() const {
     SkASSERT(NULL == fPixelRef || fPixelLockCount > 0);
 
-    if (NULL != fPixelRef && 0 == --fPixelLockCount) {
+    if (NULL != fPixelRef && 1 == sk_atomic_dec(&fPixelLockCount)) {
         fPixelRef->unlockPixels();
         this->updatePixelsFromRef();
     }