| OLD | NEW | 
|---|
| 1 | 1 | 
| 2 /* | 2 /* | 
| 3  * Copyright 2011 Google Inc. | 3  * Copyright 2011 Google Inc. | 
| 4  * | 4  * | 
| 5  * Use of this source code is governed by a BSD-style license that can be | 5  * Use of this source code is governed by a BSD-style license that can be | 
| 6  * found in the LICENSE file. | 6  * found in the LICENSE file. | 
| 7  */ | 7  */ | 
| 8 #include "SkPixelRef.h" | 8 #include "SkPixelRef.h" | 
| 9 #include "SkFlattenableBuffers.h" | 9 #include "SkFlattenableBuffers.h" | 
| 10 #include "SkThread.h" | 10 #include "SkThread.h" | 
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 175 } | 175 } | 
| 176 | 176 | 
| 177 void SkPixelRef::lockPixels() { | 177 void SkPixelRef::lockPixels() { | 
| 178     SkASSERT(!fPreLocked || SKPIXELREF_PRELOCKED_LOCKCOUNT == fLockCount); | 178     SkASSERT(!fPreLocked || SKPIXELREF_PRELOCKED_LOCKCOUNT == fLockCount); | 
| 179 | 179 | 
| 180     if (!fPreLocked) { | 180     if (!fPreLocked) { | 
| 181         SkAutoMutexAcquire  ac(*fMutex); | 181         SkAutoMutexAcquire  ac(*fMutex); | 
| 182 | 182 | 
| 183         if (1 == ++fLockCount) { | 183         if (1 == ++fLockCount) { | 
| 184             fPixels = this->onLockPixels(&fColorTable); | 184             fPixels = this->onLockPixels(&fColorTable); | 
|  | 185             // If onLockPixels failed, it will return NULL | 
|  | 186             if (NULL == fPixels) { | 
|  | 187                 fColorTable = NULL; | 
|  | 188             } | 
| 185         } | 189         } | 
| 186     } | 190     } | 
| 187 } | 191 } | 
| 188 | 192 | 
| 189 void SkPixelRef::unlockPixels() { | 193 void SkPixelRef::unlockPixels() { | 
| 190     SkASSERT(!fPreLocked || SKPIXELREF_PRELOCKED_LOCKCOUNT == fLockCount); | 194     SkASSERT(!fPreLocked || SKPIXELREF_PRELOCKED_LOCKCOUNT == fLockCount); | 
| 191 | 195 | 
| 192     if (!fPreLocked) { | 196     if (!fPreLocked) { | 
| 193         SkAutoMutexAcquire  ac(*fMutex); | 197         SkAutoMutexAcquire  ac(*fMutex); | 
| 194 | 198 | 
| 195         SkASSERT(fLockCount > 0); | 199         SkASSERT(fLockCount > 0); | 
| 196         if (0 == --fLockCount) { | 200         if (0 == --fLockCount) { | 
| 197             this->onUnlockPixels(); | 201             // don't call onUnlockPixels unless onLockPixels succeeded | 
| 198             fPixels = NULL; | 202             if (fPixels) { | 
| 199             fColorTable = NULL; | 203                 this->onUnlockPixels(); | 
|  | 204                 fPixels = NULL; | 
|  | 205                 fColorTable = NULL; | 
|  | 206             } else { | 
|  | 207                 SkASSERT(NULL == fColorTable); | 
|  | 208             } | 
| 200         } | 209         } | 
| 201     } | 210     } | 
| 202 } | 211 } | 
| 203 | 212 | 
| 204 bool SkPixelRef::lockPixelsAreWritable() const { | 213 bool SkPixelRef::lockPixelsAreWritable() const { | 
| 205     return this->onLockPixelsAreWritable(); | 214     return this->onLockPixelsAreWritable(); | 
| 206 } | 215 } | 
| 207 | 216 | 
| 208 bool SkPixelRef::onLockPixelsAreWritable() const { | 217 bool SkPixelRef::onLockPixelsAreWritable() const { | 
| 209     return true; | 218     return true; | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 279 | 288 | 
| 280 #ifdef SK_BUILD_FOR_ANDROID | 289 #ifdef SK_BUILD_FOR_ANDROID | 
| 281 void SkPixelRef::globalRef(void* data) { | 290 void SkPixelRef::globalRef(void* data) { | 
| 282     this->ref(); | 291     this->ref(); | 
| 283 } | 292 } | 
| 284 | 293 | 
| 285 void SkPixelRef::globalUnref() { | 294 void SkPixelRef::globalUnref() { | 
| 286     this->unref(); | 295     this->unref(); | 
| 287 } | 296 } | 
| 288 #endif | 297 #endif | 
| OLD | NEW | 
|---|