Home | History | Annotate | Download | only in utils
      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