// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. #ifndef JCEF_NATIVE_CRITICAL_WAIT_H_ #define JCEF_NATIVE_CRITICAL_WAIT_H_ #pragma once #include "include/cef_task.h" #if defined(OS_WIN) #include #define WAIT_MUTEX HANDLE #define WAIT_COND HANDLE #else #include #define WAIT_MUTEX pthread_mutex_t #define WAIT_COND pthread_cond_t #endif class CriticalLock { public: CriticalLock(); ~CriticalLock(); void Lock(); void Unlock(); private: friend class CriticalWait; WAIT_MUTEX lock_; }; class CriticalWait { public: explicit CriticalWait(CriticalLock* lock); ~CriticalWait(); void Wait(); bool Wait(unsigned int maxWaitMs); void WakeUp(); CriticalLock* lock() { return lock_; } private: WAIT_COND cond_; CriticalLock* lock_; }; #endif // JCEF_NATIVE_CRITICAL_WAIT_H_