/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkCountdown.h" #include "SkThread.h" SkCountdown::SkCountdown(int32_t count) : fCount(count) {} void SkCountdown::reset(int32_t count) { fCount = count; } void SkCountdown::run() { if (sk_atomic_dec(&fCount) == 1) { fReady.lock(); fReady.signal(); fReady.unlock(); } } void SkCountdown::wait() { fReady.lock(); while (fCount > 0) { fReady.wait(); } fReady.unlock(); }