Przeglądaj źródła

Cleaned up writer. for range.

Steve Thielemann 2 lat temu
rodzic
commit
21291344d2
2 zmienionych plików z 43 dodań i 52 usunięć
  1. 4 4
      door/door.go
  2. 39 48
      door/write_linux.go

+ 4 - 4
door/door.go

@@ -86,10 +86,10 @@ type MouseMode int
 
 const (
 	Off      MouseMode = 0
-	X10                = 9
-	Normal             = 1000
-	Button             = 1002
-	AnyEvent           = 1003
+	X10      MouseMode = 9
+	Normal   MouseMode = 1000
+	Button   MouseMode = 1002
+	AnyEvent MouseMode = 1003
 )
 
 /*

+ 39 - 48
door/write_linux.go

@@ -14,58 +14,49 @@ func Writer(d *Door) {
 	defer d.wg.Done()
 	var Closed bool = false
 
-	for {
-		select {
-		case output, ok := <-d.writerChannel:
-			if !ok {
-				log.Println("closeChannel")
-
-				d.writerMutex.Lock()
-				if !d.WriterClosed {
-					// Safe from data races, writerChannel unbuffered
-					d.WriterClosed = true
-				}
-				d.writerMutex.Unlock()
-				log.Println("~Writer")
-				return
-
-			} else {
-				// log.Println("output")
-				/* Handle cases where we're updating a portion of the screen.
-				When we SavePos, also save/restore the last color set.
-				*/
-				if output == "" {
-					Closed = true
-					continue
-				}
-
-				if Closed {
-					log.Println("ignoring write output.")
-					continue
-				}
-
-				if strings.HasSuffix(output, RestorePos) {
-					output += Color(d.LastColor...)
+	for output := range d.writerChannel {
+		// log.Println("output")
+		/* Handle cases where we're updating a portion of the screen.
+		When we SavePos, also save/restore the last color set.
+		*/
+		if output == "" {
+			Closed = true
+			continue
+		}
 
-				} else {
-					d.UpdateLastColor(output, &d.LastColor)
-				}
-				// log.Println("write output")
-				buffer := []byte(output)
+		if Closed {
+			log.Println("ignoring write output.")
+			continue
+		}
 
-				n, err := syscall.Write(handle, buffer)
-				if (err != nil) || (n != len(buffer)) {
-					log.Println("closeChannel")
-					Closed = true
-					d.writerMutex.Lock()
-					if !d.WriterClosed {
-						d.WriterClosed = true
-						// close(d.writerChannel)
-					}
-					d.writerMutex.Unlock()
-				}
+		if strings.HasSuffix(output, RestorePos) {
+			output += Color(d.LastColor...)
 
+		} else {
+			d.UpdateLastColor(output, &d.LastColor)
+		}
+		// log.Println("write output")
+		buffer := []byte(output)
+
+		n, err := syscall.Write(handle, buffer)
+		if (err != nil) || (n != len(buffer)) {
+			log.Println("closeChannel")
+			Closed = true
+			d.writerMutex.Lock()
+			if !d.WriterClosed {
+				d.WriterClosed = true
+				// close(d.writerChannel)
 			}
+			d.writerMutex.Unlock()
 		}
 	}
+	log.Println("closeChannel")
+
+	d.writerMutex.Lock()
+	if !d.WriterClosed {
+		// Safe from data races, writerChannel unbuffered
+		d.WriterClosed = true
+	}
+	d.writerMutex.Unlock()
+	log.Println("~Writer")
 }