1363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger/* 2363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * Copyright 2012 Google Inc. 3363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * 4363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * Use of this source code is governed by a BSD-style license that can be 5363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * found in the LICENSE file. 6363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger */ 7363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 8363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger#ifndef SkCountdown_DEFINED 9363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger#define SkCountdown_DEFINED 10363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 11363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger#include "SkCondVar.h" 12363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger#include "SkRunnable.h" 13363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger#include "SkTypes.h" 14363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 15363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenbergerclass SkCountdown : public SkRunnable { 16363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenbergerpublic: 17363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger explicit SkCountdown(int32_t count); 18363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 19363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger /** 20363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * Resets the countdown to the count provided. 21363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger */ 22363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger void reset(int32_t count); 23363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 24363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual void run() SK_OVERRIDE; 25363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 26363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger /** 27363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * Blocks until run() has been called count times. 28363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger */ 29363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger void wait(); 30363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 31363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenbergerprivate: 32363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger SkCondVar fReady; 33363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger int32_t fCount; 34363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger}; 35363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 36363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger#endif 37