Index: dm/DMReporter.cpp |
diff --git a/dm/DMReporter.cpp b/dm/DMReporter.cpp |
index 4bb25d349dffe193b853c1b3481ef9177db824ac..0bc77bd573adad4e3f221d76179613fb5e7d8272 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); |
} |