1*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 2*fd1fabb7SAndroid Build Coastguard Worker // Copyright 2002-2008 Adobe Systems Incorporated 3*fd1fabb7SAndroid Build Coastguard Worker // All Rights Reserved. 4*fd1fabb7SAndroid Build Coastguard Worker // 5*fd1fabb7SAndroid Build Coastguard Worker // NOTICE: Adobe permits you to use, modify, and distribute this file in 6*fd1fabb7SAndroid Build Coastguard Worker // accordance with the terms of the Adobe license agreement accompanying it. 7*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 8*fd1fabb7SAndroid Build Coastguard Worker 9*fd1fabb7SAndroid Build Coastguard Worker /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_pthread.h#1 $ */ 10*fd1fabb7SAndroid Build Coastguard Worker /* $DateTime: 2012/05/30 13:28:51 $ */ 11*fd1fabb7SAndroid Build Coastguard Worker /* $Change: 832332 $ */ 12*fd1fabb7SAndroid Build Coastguard Worker /* $Author: tknoll $ */ 13*fd1fabb7SAndroid Build Coastguard Worker 14*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 15*fd1fabb7SAndroid Build Coastguard Worker 16*fd1fabb7SAndroid Build Coastguard Worker #ifndef __dng_pthread__ 17*fd1fabb7SAndroid Build Coastguard Worker #define __dng_pthread__ 18*fd1fabb7SAndroid Build Coastguard Worker 19*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 20*fd1fabb7SAndroid Build Coastguard Worker 21*fd1fabb7SAndroid Build Coastguard Worker #include "dng_flags.h" 22*fd1fabb7SAndroid Build Coastguard Worker 23*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 24*fd1fabb7SAndroid Build Coastguard Worker 25*fd1fabb7SAndroid Build Coastguard Worker #if qDNGThreadSafe 26*fd1fabb7SAndroid Build Coastguard Worker 27*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 28*fd1fabb7SAndroid Build Coastguard Worker 29*fd1fabb7SAndroid Build Coastguard Worker #if !qWinOS 30*fd1fabb7SAndroid Build Coastguard Worker 31*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 32*fd1fabb7SAndroid Build Coastguard Worker 33*fd1fabb7SAndroid Build Coastguard Worker /* Try generic POSIX compile */ 34*fd1fabb7SAndroid Build Coastguard Worker 35*fd1fabb7SAndroid Build Coastguard Worker #include <errno.h> 36*fd1fabb7SAndroid Build Coastguard Worker #include <pthread.h> 37*fd1fabb7SAndroid Build Coastguard Worker 38*fd1fabb7SAndroid Build Coastguard Worker #define dng_pthread_disassociate() 39*fd1fabb7SAndroid Build Coastguard Worker #define dng_pthread_terminate() 40*fd1fabb7SAndroid Build Coastguard Worker 41*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 42*fd1fabb7SAndroid Build Coastguard Worker 43*fd1fabb7SAndroid Build Coastguard Worker #else 44*fd1fabb7SAndroid Build Coastguard Worker 45*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 46*fd1fabb7SAndroid Build Coastguard Worker 47*fd1fabb7SAndroid Build Coastguard Worker #include <stdlib.h> 48*fd1fabb7SAndroid Build Coastguard Worker 49*fd1fabb7SAndroid Build Coastguard Worker #if _MSC_VER >= 1600 50*fd1fabb7SAndroid Build Coastguard Worker 51*fd1fabb7SAndroid Build Coastguard Worker // Get this included so ETIMEDOUT is predefined. 52*fd1fabb7SAndroid Build Coastguard Worker #include <errno.h> 53*fd1fabb7SAndroid Build Coastguard Worker 54*fd1fabb7SAndroid Build Coastguard Worker #endif 55*fd1fabb7SAndroid Build Coastguard Worker 56*fd1fabb7SAndroid Build Coastguard Worker #include <time.h> 57*fd1fabb7SAndroid Build Coastguard Worker #define dng_timespec timespec 58*fd1fabb7SAndroid Build Coastguard Worker 59*fd1fabb7SAndroid Build Coastguard Worker #ifdef __cplusplus 60*fd1fabb7SAndroid Build Coastguard Worker extern "C" 61*fd1fabb7SAndroid Build Coastguard Worker { 62*fd1fabb7SAndroid Build Coastguard Worker #endif 63*fd1fabb7SAndroid Build Coastguard Worker 64*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 65*fd1fabb7SAndroid Build Coastguard Worker 66*fd1fabb7SAndroid Build Coastguard Worker #define DNG_ETIMEDOUT 60 /* Operation timed out */ 67*fd1fabb7SAndroid Build Coastguard Worker 68*fd1fabb7SAndroid Build Coastguard Worker typedef unsigned long dng_pthread_t; 69*fd1fabb7SAndroid Build Coastguard Worker 70*fd1fabb7SAndroid Build Coastguard Worker typedef struct dng_pthread_mutex_impl *dng_pthread_mutex_t; 71*fd1fabb7SAndroid Build Coastguard Worker typedef struct dng_pthread_cond_impl *dng_pthread_cond_t; 72*fd1fabb7SAndroid Build Coastguard Worker typedef unsigned long dng_pthread_key_t; 73*fd1fabb7SAndroid Build Coastguard Worker 74*fd1fabb7SAndroid Build Coastguard Worker 75*fd1fabb7SAndroid Build Coastguard Worker #define DNG_PTHREAD_MUTEX_INITIALIZER ((struct dng_pthread_mutex_impl *)-1) 76*fd1fabb7SAndroid Build Coastguard Worker #define DNG_PTHREAD_COND_INITIALIZER ((struct dng_pthread_cond_impl *)-1) 77*fd1fabb7SAndroid Build Coastguard Worker 78*fd1fabb7SAndroid Build Coastguard Worker struct _dng_pthread_once_t { 79*fd1fabb7SAndroid Build Coastguard Worker int inited; 80*fd1fabb7SAndroid Build Coastguard Worker long semaphore; 81*fd1fabb7SAndroid Build Coastguard Worker }; 82*fd1fabb7SAndroid Build Coastguard Worker 83*fd1fabb7SAndroid Build Coastguard Worker typedef struct _dng_pthread_once_t dng_pthread_once_t; 84*fd1fabb7SAndroid Build Coastguard Worker #define DNG_PTHREAD_ONCE_INIT { 0, -1 } 85*fd1fabb7SAndroid Build Coastguard Worker 86*fd1fabb7SAndroid Build Coastguard Worker #define dng_pthread_equal(t1, t2) ((t1) == (t2)) 87*fd1fabb7SAndroid Build Coastguard Worker 88*fd1fabb7SAndroid Build Coastguard Worker typedef struct dng_pthread_attr_impl *dng_pthread_attr_t; 89*fd1fabb7SAndroid Build Coastguard Worker 90*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_attr_init(dng_pthread_attr_t *attr); 91*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_attr_destroy(dng_pthread_attr_t *attr); 92*fd1fabb7SAndroid Build Coastguard Worker 93*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_attr_setstacksize(dng_pthread_attr_t *attr, size_t stacksize); 94*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_attr_getstacksize(const dng_pthread_attr_t *attr, size_t *stacksize); 95*fd1fabb7SAndroid Build Coastguard Worker 96*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_create(dng_pthread_t *thread, const dng_pthread_attr_t * /* attrs */, void * (*func)(void *), void *arg); 97*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_detach(dng_pthread_t thread); 98*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_join(dng_pthread_t thread, void **result); 99*fd1fabb7SAndroid Build Coastguard Worker dng_pthread_t dng_pthread_self(); 100*fd1fabb7SAndroid Build Coastguard Worker void dng_pthread_exit(void *result); 101*fd1fabb7SAndroid Build Coastguard Worker 102*fd1fabb7SAndroid Build Coastguard Worker #define DNG_PTHREAD_MUTEX_RECURSIVE 0 103*fd1fabb7SAndroid Build Coastguard Worker typedef unsigned long dng_pthread_mutexattr_t; 104*fd1fabb7SAndroid Build Coastguard Worker 105*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_mutexattr_init(dng_pthread_mutexattr_t *mutexattr); 106*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_mutexattr_settype(dng_pthread_mutexattr_t *mutexattr, int /*the options*/); 107*fd1fabb7SAndroid Build Coastguard Worker 108*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_mutex_init(dng_pthread_mutex_t *mutex, void * /* attrs */); 109*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_mutex_destroy(dng_pthread_mutex_t *mutex); 110*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_mutex_lock(dng_pthread_mutex_t *mutex); 111*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_mutex_unlock(dng_pthread_mutex_t *mutex); 112*fd1fabb7SAndroid Build Coastguard Worker 113*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_cond_init(dng_pthread_cond_t *cond, void * /* attrs */); 114*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_cond_destroy(dng_pthread_cond_t *cond); 115*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_cond_wait(dng_pthread_cond_t *cond, dng_pthread_mutex_t *mutex); 116*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_cond_timedwait(dng_pthread_cond_t *cond, dng_pthread_mutex_t *mutex, struct dng_timespec *latest_time); 117*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_cond_signal(dng_pthread_cond_t *cond); 118*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_cond_broadcast(dng_pthread_cond_t *cond); 119*fd1fabb7SAndroid Build Coastguard Worker 120*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_once(dng_pthread_once_t *once, void (*init_func)()); 121*fd1fabb7SAndroid Build Coastguard Worker 122*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_key_create(dng_pthread_key_t * key, void (*destructor) (void *)); 123*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_key_delete(dng_pthread_key_t key); 124*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_setspecific(dng_pthread_key_t key, const void *value); 125*fd1fabb7SAndroid Build Coastguard Worker void *dng_pthread_getspecific(dng_pthread_key_t key); 126*fd1fabb7SAndroid Build Coastguard Worker 127*fd1fabb7SAndroid Build Coastguard Worker typedef struct dng_pthread_rwlock_impl *dng_pthread_rwlock_t; 128*fd1fabb7SAndroid Build Coastguard Worker typedef void *pthread_rwlockattr_t; 129*fd1fabb7SAndroid Build Coastguard Worker 130*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_destroy(dng_pthread_rwlock_t * rwlock); 131*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_init(dng_pthread_rwlock_t * rwlock, const pthread_rwlockattr_t * attrs); 132*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_rdlock(dng_pthread_rwlock_t * rwlock); 133*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_tryrdlock(dng_pthread_rwlock_t * rwlock); 134*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_trywrlock(dng_pthread_rwlock_t * rwlock); 135*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_unlock(dng_pthread_rwlock_t * rwlock); 136*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_wrlock(dng_pthread_rwlock_t * rwlock); 137*fd1fabb7SAndroid Build Coastguard Worker 138*fd1fabb7SAndroid Build Coastguard Worker typedef struct dng_pthread_rwlock_impl *dng_pthread_rwlock_t; 139*fd1fabb7SAndroid Build Coastguard Worker typedef void *pthread_rwlockattr_t; 140*fd1fabb7SAndroid Build Coastguard Worker 141*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_destroy(dng_pthread_rwlock_t * rwlock); 142*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_init(dng_pthread_rwlock_t * rwlock, const pthread_rwlockattr_t * attrs); 143*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_rdlock(dng_pthread_rwlock_t * rwlock); 144*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_tryrdlock(dng_pthread_rwlock_t * rwlock); 145*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_trywrlock(dng_pthread_rwlock_t * rwlock); 146*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_unlock(dng_pthread_rwlock_t * rwlock); 147*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_rwlock_wrlock(dng_pthread_rwlock_t * rwlock); 148*fd1fabb7SAndroid Build Coastguard Worker 149*fd1fabb7SAndroid Build Coastguard Worker // dng_pthread may maintain per-thread global state. This routine frees that global state. 150*fd1fabb7SAndroid Build Coastguard Worker // there is no need to call this for threads created by dng_pthread and one can call 151*fd1fabb7SAndroid Build Coastguard Worker // dng_pthread routines of a thread after dng_pthread_disassociate as the global state will 152*fd1fabb7SAndroid Build Coastguard Worker // be recreated as necessary. However dng_pthread_disassociate will need to be called again 153*fd1fabb7SAndroid Build Coastguard Worker // and there is a slight performance cost. Do not call this routine while holding a mutex, etc. 154*fd1fabb7SAndroid Build Coastguard Worker void dng_pthread_disassociate(); 155*fd1fabb7SAndroid Build Coastguard Worker 156*fd1fabb7SAndroid Build Coastguard Worker void dng_pthread_terminate(); 157*fd1fabb7SAndroid Build Coastguard Worker 158*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 159*fd1fabb7SAndroid Build Coastguard Worker 160*fd1fabb7SAndroid Build Coastguard Worker // Map symbols back to plain pthread names. This whole mechanism is so the DNG pthreads library 161*fd1fabb7SAndroid Build Coastguard Worker // symbols do not collide with another pthread emulation library 162*fd1fabb7SAndroid Build Coastguard Worker // that may be in use in the same linked entity. However if that is the case, it would be far better 163*fd1fabb7SAndroid Build Coastguard Worker // to have the DNG code use the same pthread library as the rest of the code. 164*fd1fabb7SAndroid Build Coastguard Worker 165*fd1fabb7SAndroid Build Coastguard Worker #define pthread_t dng_pthread_t 166*fd1fabb7SAndroid Build Coastguard Worker #define pthread_mutex_t dng_pthread_mutex_t 167*fd1fabb7SAndroid Build Coastguard Worker #define pthread_cond_t dng_pthread_cond_t 168*fd1fabb7SAndroid Build Coastguard Worker #define pthread_once_t dng_pthread_once_t 169*fd1fabb7SAndroid Build Coastguard Worker #define pthread_key_t dng_pthread_key_t 170*fd1fabb7SAndroid Build Coastguard Worker 171*fd1fabb7SAndroid Build Coastguard Worker #undef PTHREAD_MUTEX_INITIALIZER 172*fd1fabb7SAndroid Build Coastguard Worker #define PTHREAD_MUTEX_INITIALIZER DNG_PTHREAD_MUTEX_INITIALIZER 173*fd1fabb7SAndroid Build Coastguard Worker #undef PTHREAD_COND_INITIALIZER 174*fd1fabb7SAndroid Build Coastguard Worker #define PTHREAD_COND_INITIALIZER DNG_PTHREAD_COND_INITIALIZER 175*fd1fabb7SAndroid Build Coastguard Worker 176*fd1fabb7SAndroid Build Coastguard Worker #undef PTHREAD_ONCE_INIT 177*fd1fabb7SAndroid Build Coastguard Worker #define PTHREAD_ONCE_INIT DNG_PTHREAD_ONCE_INIT 178*fd1fabb7SAndroid Build Coastguard Worker 179*fd1fabb7SAndroid Build Coastguard Worker /* If it is defined on Windows, it probably has the wrong value... */ 180*fd1fabb7SAndroid Build Coastguard Worker #if defined(WIN32) || !defined(ETIMEDOUT) 181*fd1fabb7SAndroid Build Coastguard Worker #undef ETIMEDOUT 182*fd1fabb7SAndroid Build Coastguard Worker #define ETIMEDOUT DNG_ETIMEDOUT 183*fd1fabb7SAndroid Build Coastguard Worker #endif 184*fd1fabb7SAndroid Build Coastguard Worker 185*fd1fabb7SAndroid Build Coastguard Worker #define pthread_equal dng_pthread_equal 186*fd1fabb7SAndroid Build Coastguard Worker 187*fd1fabb7SAndroid Build Coastguard Worker #define pthread_attr_t dng_pthread_attr_t 188*fd1fabb7SAndroid Build Coastguard Worker 189*fd1fabb7SAndroid Build Coastguard Worker #define pthread_attr_init dng_pthread_attr_init 190*fd1fabb7SAndroid Build Coastguard Worker #define pthread_attr_destroy dng_pthread_attr_destroy 191*fd1fabb7SAndroid Build Coastguard Worker 192*fd1fabb7SAndroid Build Coastguard Worker #define pthread_attr_setstacksize dng_pthread_attr_setstacksize 193*fd1fabb7SAndroid Build Coastguard Worker #define pthread_attr_getstacksize dng_pthread_attr_getstacksize 194*fd1fabb7SAndroid Build Coastguard Worker 195*fd1fabb7SAndroid Build Coastguard Worker #define pthread_create dng_pthread_create 196*fd1fabb7SAndroid Build Coastguard Worker #define pthread_detach dng_pthread_detach 197*fd1fabb7SAndroid Build Coastguard Worker #define pthread_join dng_pthread_join 198*fd1fabb7SAndroid Build Coastguard Worker #define pthread_self dng_pthread_self 199*fd1fabb7SAndroid Build Coastguard Worker #define pthread_exit dng_pthread_exit 200*fd1fabb7SAndroid Build Coastguard Worker 201*fd1fabb7SAndroid Build Coastguard Worker #define pthread_mutex_init dng_pthread_mutex_init 202*fd1fabb7SAndroid Build Coastguard Worker #define pthread_mutex_destroy dng_pthread_mutex_destroy 203*fd1fabb7SAndroid Build Coastguard Worker #define pthread_mutex_lock dng_pthread_mutex_lock 204*fd1fabb7SAndroid Build Coastguard Worker #define pthread_mutex_unlock dng_pthread_mutex_unlock 205*fd1fabb7SAndroid Build Coastguard Worker 206*fd1fabb7SAndroid Build Coastguard Worker #define pthread_cond_init dng_pthread_cond_init 207*fd1fabb7SAndroid Build Coastguard Worker #define pthread_cond_destroy dng_pthread_cond_destroy 208*fd1fabb7SAndroid Build Coastguard Worker #define pthread_cond_wait dng_pthread_cond_wait 209*fd1fabb7SAndroid Build Coastguard Worker #define pthread_cond_timedwait dng_pthread_cond_timedwait 210*fd1fabb7SAndroid Build Coastguard Worker #define pthread_cond_signal dng_pthread_cond_signal 211*fd1fabb7SAndroid Build Coastguard Worker #define pthread_cond_broadcast dng_pthread_cond_broadcast 212*fd1fabb7SAndroid Build Coastguard Worker 213*fd1fabb7SAndroid Build Coastguard Worker #define pthread_once dng_pthread_once 214*fd1fabb7SAndroid Build Coastguard Worker 215*fd1fabb7SAndroid Build Coastguard Worker #define pthread_key_create dng_pthread_key_create 216*fd1fabb7SAndroid Build Coastguard Worker #define pthread_key_delete dng_pthread_key_delete 217*fd1fabb7SAndroid Build Coastguard Worker #define pthread_setspecific dng_pthread_setspecific 218*fd1fabb7SAndroid Build Coastguard Worker #define pthread_getspecific dng_pthread_getspecific 219*fd1fabb7SAndroid Build Coastguard Worker 220*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_t dng_pthread_rwlock_t 221*fd1fabb7SAndroid Build Coastguard Worker 222*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_destroy dng_pthread_rwlock_destroy 223*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_init dng_pthread_rwlock_init 224*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_rdlock dng_pthread_rwlock_rdlock 225*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_tryrdlock dng_pthread_rwlock_tryrdlock 226*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_trywrlock dng_pthread_rwlock_trywrlock 227*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_unlock dng_pthread_rwlock_unlock 228*fd1fabb7SAndroid Build Coastguard Worker #define pthread_rwlock_wrlock dng_pthread_rwlock_wrlock 229*fd1fabb7SAndroid Build Coastguard Worker 230*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 231*fd1fabb7SAndroid Build Coastguard Worker 232*fd1fabb7SAndroid Build Coastguard Worker #ifdef __cplusplus 233*fd1fabb7SAndroid Build Coastguard Worker } 234*fd1fabb7SAndroid Build Coastguard Worker #endif 235*fd1fabb7SAndroid Build Coastguard Worker 236*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 237*fd1fabb7SAndroid Build Coastguard Worker 238*fd1fabb7SAndroid Build Coastguard Worker #endif 239*fd1fabb7SAndroid Build Coastguard Worker 240*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 241*fd1fabb7SAndroid Build Coastguard Worker 242*fd1fabb7SAndroid Build Coastguard Worker #ifdef __cplusplus 243*fd1fabb7SAndroid Build Coastguard Worker extern "C" 244*fd1fabb7SAndroid Build Coastguard Worker { 245*fd1fabb7SAndroid Build Coastguard Worker #endif 246*fd1fabb7SAndroid Build Coastguard Worker 247*fd1fabb7SAndroid Build Coastguard Worker int dng_pthread_now (struct timespec *now); 248*fd1fabb7SAndroid Build Coastguard Worker 249*fd1fabb7SAndroid Build Coastguard Worker #ifdef __cplusplus 250*fd1fabb7SAndroid Build Coastguard Worker } 251*fd1fabb7SAndroid Build Coastguard Worker #endif 252*fd1fabb7SAndroid Build Coastguard Worker 253*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 254*fd1fabb7SAndroid Build Coastguard Worker 255*fd1fabb7SAndroid Build Coastguard Worker #endif // qDNGThreadSafe 256*fd1fabb7SAndroid Build Coastguard Worker 257*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 258*fd1fabb7SAndroid Build Coastguard Worker 259*fd1fabb7SAndroid Build Coastguard Worker #endif 260*fd1fabb7SAndroid Build Coastguard Worker 261*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 262