| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2  * Copyright 2016 Google Inc. | 
|  | 3  * | 
|  | 4  * Use of this source code is governed by a BSD-style license that can be | 
|  | 5  * found in the LICENSE file. | 
|  | 6  */ | 
|  | 7 | 
|  | 8 #ifndef GrSingleOwner_DEFINED | 
|  | 9 #define GrSingleOwner_DEFINED | 
|  | 10 | 
|  | 11 #include "SkTypes.h" | 
|  | 12 | 
|  | 13 #ifdef SK_DEBUG | 
|  | 14 #include "SkMutex.h" | 
|  | 15 #include "SkThreadID.h" | 
|  | 16 | 
|  | 17 // This is a debug tool to verify an object is only being used from one thread a
    t a time. | 
|  | 18 class GrSingleOwner { | 
|  | 19 public: | 
|  | 20      GrSingleOwner() : fOwner(kIllegalThreadID), fReentranceCount(0) {} | 
|  | 21 | 
|  | 22      struct AutoEnforce { | 
|  | 23          AutoEnforce(GrSingleOwner* so) : fSO(so) { fSO->enter(); } | 
|  | 24          ~AutoEnforce() { fSO->exit(); } | 
|  | 25 | 
|  | 26          GrSingleOwner* fSO; | 
|  | 27      }; | 
|  | 28 | 
|  | 29 private: | 
|  | 30      void enter() { | 
|  | 31          SkAutoMutexAcquire lock(fMutex); | 
|  | 32          SkThreadID self = SkGetThreadID(); | 
|  | 33          SkASSERT(fOwner == self || fOwner == kIllegalThreadID); | 
|  | 34          fReentranceCount++; | 
|  | 35          fOwner = self; | 
|  | 36      } | 
|  | 37 | 
|  | 38      void exit() { | 
|  | 39          SkAutoMutexAcquire lock(fMutex); | 
|  | 40          fReentranceCount--; | 
|  | 41          if (fReentranceCount == 0) { | 
|  | 42              fOwner = kIllegalThreadID; | 
|  | 43          } | 
|  | 44      } | 
|  | 45 | 
|  | 46      SkMutex fMutex; | 
|  | 47      SkThreadID fOwner;    // guarded by fMutex | 
|  | 48      int fReentranceCount; // guarded by fMutex | 
|  | 49 }; | 
|  | 50 #endif | 
|  | 51 | 
|  | 52 #endif | 
| OLD | NEW | 
|---|