aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMReporter.cpp
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-29 20:14:48 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-29 20:14:48 +0000
commit39e8d93337c7e37d2b09dc710a05a9beefef5c2c (patch)
tree4698434f439e248887ed732ce445ca036edb16b3 /dm/DMReporter.cpp
parent97de357270e54be53acb17e1cb4b4d5e25bacc01 (diff)
DM tweaks
- Don't print status updates for skipped tasks or count them as pending tasks. - Refactor DMReporter a bit for better symmetry, be more explicit about how we read atomics (that is, approximately) in printStatus() (née finish()). - Remove mutex locking from printStatus(). BUG=skia: R=halcanary@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/309483003 git-svn-id: http://skia.googlecode.com/svn/trunk@14977 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'dm/DMReporter.cpp')
-rw-r--r--dm/DMReporter.cpp21
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);
}