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