diff options
Diffstat (limited to 'src/ports')
-rw-r--r-- | src/ports/SkMutex_win.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/ports/SkMutex_win.h b/src/ports/SkMutex_win.h index d12fd033f3..d84b0e42fd 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,16 @@ 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 { }; // Windows currently provides no documented means of POD initializing a CRITICAL_SECTION. #define SK_DECLARE_STATIC_MUTEX(name) static SkBaseMutex name |