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