| Index: src/ports/SkMutex_win.h
|
| ===================================================================
|
| --- src/ports/SkMutex_win.h (revision 0)
|
| +++ src/ports/SkMutex_win.h (working copy)
|
| @@ -0,0 +1,45 @@
|
| +/*
|
| + * Copyright 2013 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef SkMutex_win_DEFINED
|
| +#define SkMutex_win_DEFINED
|
| +
|
| +/** Windows CriticalSection based mutex. */
|
| +
|
| +#include "SkTypes.h"
|
| +
|
| +// On Windows, SkBaseMutex and SkMutex are the same thing,
|
| +// we can't easily get rid of static initializers.
|
| +class SkMutex : SkNoncopyable {
|
| +public:
|
| + SkMutex() {
|
| + InitializeCriticalSection(&fStorage);
|
| + }
|
| +
|
| + ~SkMutex() {
|
| + DeleteCriticalSection(&fStorage);
|
| + }
|
| +
|
| + void acquire() {
|
| + EnterCriticalSection(&fStorage);
|
| + }
|
| +
|
| + void release() {
|
| + LeaveCriticalSection(&fStorage);
|
| + }
|
| +
|
| +private:
|
| + CRITICAL_SECTION fStorage;
|
| +};
|
| +
|
| +typedef SkMutex SkBaseMutex;
|
| +
|
| +// Windows currently provides no documented means of POD initializing a CRITICAL_SECTION.
|
| +#define SK_DECLARE_STATIC_MUTEX(name) static SkBaseMutex name
|
| +#define SK_DECLARE_GLOBAL_MUTEX(name) SkBaseMutex name
|
| +
|
| +#endif
|
|
|