diff options
Diffstat (limited to 'dm/DMReporter.cpp')
-rw-r--r-- | dm/DMReporter.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/dm/DMReporter.cpp b/dm/DMReporter.cpp index 4bb25d349d..0bc77bd573 100644 --- a/dm/DMReporter.cpp +++ b/dm/DMReporter.cpp @@ -1,5 +1,6 @@ #include "DMReporter.h" +#include "SkDynamicAnnotations.h" #include "SkCommandLineFlags.h" #include "OverwriteLine.h" @@ -8,18 +9,17 @@ DEFINE_bool2(verbose, v, false, "If true, print status updates one-per-line."); namespace DM { -void Reporter::finish(SkString name, SkMSec timeMs) { - sk_atomic_inc(&fFinished); - +void Reporter::printStatus(SkString name, SkMSec timeMs) const { if (FLAGS_quiet) { return; } + // It's okay if these are a little off---they're just for show---so we can read unprotectedly. + const int32_t failed = SK_ANNOTATE_UNPROTECTED_READ(fFailed); + const int32_t pending = SK_ANNOTATE_UNPROTECTED_READ(fPending) - 1; + SkString status; - status.printf("%s%d tasks left", - FLAGS_verbose ? "\n" : kSkOverwriteLine, - this->started() - this->finished()); - const int failed = this->failed(); + status.printf("%s%d tasks left", FLAGS_verbose ? "\n" : kSkOverwriteLine, pending); if (failed > 0) { status.appendf(", %d failed", failed); } @@ -29,12 +29,9 @@ void Reporter::finish(SkString name, SkMSec timeMs) { SkDebugf("%s", status.c_str()); } -int32_t Reporter::failed() const { - SkAutoMutexAcquire reader(&fMutex); - return fFailures.count(); -} - void Reporter::fail(SkString msg) { + sk_atomic_inc(&fFailed); + SkAutoMutexAcquire writer(&fMutex); fFailures.push_back(msg); } |