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#include "SkCountdown.h" 9#include "SkThread.h" 10 11SkCountdown::SkCountdown(int32_t count) 12: fCount(count) {} 13 14void SkCountdown::reset(int32_t count) { 15 fCount = count; 16} 17 18void SkCountdown::run() { 19 if (sk_atomic_dec(&fCount) == 1) { 20 fReady.lock(); 21 fReady.signal(); 22 fReady.unlock(); 23 } 24} 25 26void SkCountdown::wait() { 27 fReady.lock(); 28 while (fCount > 0) { 29 fReady.wait(); 30 } 31 fReady.unlock(); 32} 33