Chromium Code Reviews| Index: src/ports/SkMutex_win.h |
| diff --git a/src/ports/SkMutex_win.h b/src/ports/SkMutex_win.h |
| index d12fd033f3d6d6a457d1b9022987572f8be9690f..1a46c280cb441c45567a30836d01ed78ec6ee05d 100644 |
| --- a/src/ports/SkMutex_win.h |
| +++ b/src/ports/SkMutex_win.h |
| @@ -31,15 +31,17 @@ |
| #endif |
| // On Windows, SkBaseMutex and SkMutex are the same thing, |
| -// we can't easily get rid of static initializers. |
| -class SkMutex { |
| +// we can't easily get rid of static initializers. However, |
| +// we preserve the same inheritance pattern as other platforms |
| +// so that we can forward-declare cleanly. |
| +struct SkBaseMutex { |
| public: |
| - SkMutex() { |
| + SkBaseMutex() { |
| InitializeCriticalSection(&fStorage); |
| SkDEBUGCODE(fOwner = 0;) |
| } |
| - ~SkMutex() { |
| + ~SkBaseMutex() { |
| SkASSERT(0 == fOwner); |
| DeleteCriticalSection(&fStorage); |
| } |
| @@ -59,15 +61,24 @@ public: |
| SkASSERT(GetCurrentThreadId() == fOwner); |
| } |
| -private: |
| - SkMutex(const SkMutex&); |
| - SkMutex& operator=(const SkMutex&); |
| - |
| +protected: |
| CRITICAL_SECTION fStorage; |
| SkDEBUGCODE(DWORD fOwner;) |
| + |
| +private: |
| + SkBaseMutex(const SkBaseMutex&); |
| + SkBaseMutex& operator=(const SkBaseMutex&); |
| }; |
| -typedef SkMutex SkBaseMutex; |
| +class SkMutex : public SkBaseMutex { |
|
mtklein
2014/06/30 23:14:46
Can't just class SkMutex : public SkBaseMutex {};
|
| +public: |
| + SkMutex() { } |
| + ~SkMutex() { } |
| + |
| +private: |
| + SkMutex(const SkMutex&); |
| + SkMutex& operator=(const SkMutex&); |
| +}; |
| // Windows currently provides no documented means of POD initializing a CRITICAL_SECTION. |
| #define SK_DECLARE_STATIC_MUTEX(name) static SkBaseMutex name |