1 /*
2  * Copyright 2012 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 SkThreadUtils_PThreadData_DEFINED
9 #define SkThreadUtils_PThreadData_DEFINED
10 
11 #include "SkThreadUtils.h"
12 #include <pthread.h>
13 
14 class PThreadEvent : SkNoncopyable {
15 public:
16     PThreadEvent();
17     ~PThreadEvent();
18     void trigger();
19     void wait();
20     bool isTriggered();
21 
22 private:
23     pthread_cond_t fCondition;
24     pthread_mutex_t fConditionMutex;
25     bool fConditionFlag;
26 };
27 
28 class SkThread_PThreadData : SkNoncopyable {
29 public:
30     SkThread_PThreadData(SkThread::entryPointProc entryPoint, void* data);
31     ~SkThread_PThreadData();
32     pthread_t fPThread;
33     bool fValidPThread;
34     PThreadEvent fStarted;
35     PThreadEvent fCanceled;
36 
37     pthread_attr_t fAttr;
38 
39     void* fParam;
40     SkThread::entryPointProc fEntryPoint;
41 };
42 
43 #endif
44