Revert "Use SIGWINCH to update terminal size"

This reverts commit 49036be4076851c4ef2003339ffd1bf022dfc844.

Reason for revert: TestSmartStatusOutputWidthChange is flaky

Change-Id: Ie5231dbbab2887ce4c4697f3fe6e52cfd6f4dd17
diff --git a/ui/terminal/smart_status.go b/ui/terminal/smart_status.go
index 999a2d0..8fa9eff 100644
--- a/ui/terminal/smart_status.go
+++ b/ui/terminal/smart_status.go
@@ -17,11 +17,8 @@
 import (
 	"fmt"
 	"io"
-	"os"
-	"os/signal"
 	"strings"
 	"sync"
-	"syscall"
 
 	"android/soong/ui/status"
 )
@@ -33,29 +30,18 @@
 	lock sync.Mutex
 
 	haveBlankLine bool
-
-	termWidth int
-	sigwinch  chan os.Signal
 }
 
 // NewSmartStatusOutput returns a StatusOutput that represents the
 // current build status similarly to Ninja's built-in terminal
 // output.
 func NewSmartStatusOutput(w io.Writer, formatter formatter) status.StatusOutput {
-	s := &smartStatusOutput{
+	return &smartStatusOutput{
 		writer:    w,
 		formatter: formatter,
 
 		haveBlankLine: true,
-
-		sigwinch: make(chan os.Signal),
 	}
-
-	s.updateTermSize()
-
-	s.startSigwinch()
-
-	return s
 }
 
 func (s *smartStatusOutput) Message(level status.MsgLevel, message string) {
@@ -115,8 +101,6 @@
 	s.lock.Lock()
 	defer s.lock.Unlock()
 
-	s.stopSigwinch()
-
 	s.requestLine()
 }
 
@@ -153,8 +137,16 @@
 
 	// Limit line width to the terminal width, otherwise we'll wrap onto
 	// another line and we won't delete the previous line.
-	if s.termWidth > 0 {
-		str = s.elide(str)
+	//
+	// Run this on every line in case the window has been resized while
+	// we're printing. This could be optimized to only re-run when we get
+	// SIGWINCH if it ever becomes too time consuming.
+	if max, ok := termWidth(s.writer); ok {
+		if len(str) > max {
+			// TODO: Just do a max. Ninja elides the middle, but that's
+			// more complicated and these lines aren't that important.
+			str = str[:max]
+		}
 	}
 
 	// Move to the beginning on the line, turn on bold, print the output,
@@ -164,35 +156,3 @@
 	fmt.Fprint(s.writer, start, str, end)
 	s.haveBlankLine = false
 }
-
-func (s *smartStatusOutput) elide(str string) string {
-	if len(str) > s.termWidth {
-		// TODO: Just do a max. Ninja elides the middle, but that's
-		// more complicated and these lines aren't that important.
-		str = str[:s.termWidth]
-	}
-
-	return str
-}
-
-func (s *smartStatusOutput) startSigwinch() {
-	signal.Notify(s.sigwinch, syscall.SIGWINCH)
-	go func() {
-		for _ = range s.sigwinch {
-			s.lock.Lock()
-			s.updateTermSize()
-			s.lock.Unlock()
-		}
-	}()
-}
-
-func (s *smartStatusOutput) stopSigwinch() {
-	signal.Stop(s.sigwinch)
-	close(s.sigwinch)
-}
-
-func (s *smartStatusOutput) updateTermSize() {
-	if w, ok := termWidth(s.writer); ok {
-		s.termWidth = w
-	}
-}