shithub: pplay

Download patch

ref: 8204f3beedf0fb9a46a8062e217057d2c068158d
parent: 082e63f89f7e0f47d2ca8faab716f4d27c4cb208
author: qwx <[email protected]>
date: Sun Sep 29 15:02:35 EDT 2024

fix prompt drawing issues by just locking display

without this, with nil argument for screen drawing just
paints over the prompt; with _screen as argument, it
works most of the time, then sometimes stops redrawing.
instead, just freeze drawing while the prompt is on;
no other user interaction is possible in the mean time
anyway.

--- a/pplay.c
+++ b/pplay.c
@@ -106,15 +106,17 @@
 static char *
 prompt(Rune r)
 {
+	int n;
 	Rune q;
 	static char buf[512];
 
 	chartorune(&q, buf);
 	if(q != r)
-          snprint(buf, sizeof buf, "%C", r);
-	if(enter("cmd:", buf, sizeof(buf)-UTFmax, mc, kc, _screen) < 0)
-		return nil;
-	return buf;
+		snprint(buf, sizeof buf, "%C", r);
+	lockdisplay(display);
+	n = enter("cmd:", buf, sizeof(buf)-UTFmax, mc, kc, nil);
+	unlockdisplay(display);
+	return n < 0 ? nil : buf;
 }
 
 static void