Home | History | Annotate | Download | only in utils
      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