| /* | |
| * Copyright 2012 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef SkThreadUtils_PThreadData_DEFINED | |
| #define SkThreadUtils_PThreadData_DEFINED | |
| #include "SkThreadUtils.h" | |
| #include <pthread.h> | |
| class PThreadEvent : SkNoncopyable { | |
| public: | |
| PThreadEvent(); | |
| ~PThreadEvent(); | |
| void trigger(); | |
| void wait(); | |
| bool isTriggered(); | |
| private: | |
| pthread_cond_t fCondition; | |
| pthread_mutex_t fConditionMutex; | |
| bool fConditionFlag; | |
| }; | |
| class SkThread_PThreadData : SkNoncopyable { | |
| public: | |
| SkThread_PThreadData(SkThread::entryPointProc entryPoint, void* data); | |
| ~SkThread_PThreadData(); | |
| pthread_t fPThread; | |
| bool fValidPThread; | |
| PThreadEvent fStarted; | |
| PThreadEvent fCanceled; | |
| pthread_attr_t fAttr; | |
| void* fParam; | |
| SkThread::entryPointProc fEntryPoint; | |
| }; | |
| #endif |