Only check for ninja stuckness after it's been running for a bit

Bug: 62580037
Test: rm -rf out && m -j showcommands | grep "ninja may be stuck" || echo ok

Change-Id: I8ff1bd216b5f8349ce9e06e5465a9f8d0663f8c0
diff --git a/ui/build/ninja.go b/ui/build/ninja.go
index 22771e7..78d1170 100644
--- a/ui/build/ninja.go
+++ b/ui/build/ninja.go
@@ -81,11 +81,19 @@
 		}
 	}
 	// Poll the ninja log for updates; if it isn't updated enough, then we want to show some diagnostics
+	done := make(chan struct{})
+	defer close(done)
+	ticker := time.NewTicker(ninjaHeartbeatDuration)
+	defer ticker.Stop()
 	checker := &statusChecker{}
 	go func() {
-		for !cmd.Done() {
-			checker.check(ctx, config, logPath)
-			time.Sleep(ninjaHeartbeatDuration)
+		for {
+			select {
+			case <-ticker.C:
+				checker.check(ctx, config, logPath)
+			case <-done:
+				return
+			}
 		}
 	}()
 
@@ -127,5 +135,5 @@
 	output := cmd.CombinedOutputOrFatal()
 	ctx.Verbose(string(output))
 
-	ctx.Printf("done\n")
+	ctx.Verbosef("done\n")
 }