|
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 |