shithub: treason

Download patch

ref: 14a76c31ba5ca60d00a898f70d13c9db14d4e5d4
parent: eee770d0ddad7bcbce81ef84e33c45d20f5a10be
author: Sigrid Solveig Haflínudóttir <[email protected]>
date: Mon Dec 14 10:52:12 EST 2020

do not stuck when mcfs failed to extract audio

--- a/main.c
+++ b/main.c
@@ -29,20 +29,26 @@
 {
 	Streamframe f;
 	Stream *s;
-	int audiofd;
+	int audiofd, synced;
 
+	synced = 0;
 	if((audiofd = open("/dev/audio", OWRITE|OCEXEC)) < 0){
 		fprint(2, "runaudio: %r\n");
-		recvp(audiosync);
-		chanclose(audiosync);
 	}else{
 		for(s = x; Sread(s, &f) == 0 && f.sz > 0;){
-			recvp(audiosync);
-			chanclose(audiosync);
+			if(!synced){
+				recvp(audiosync);
+				chanclose(audiosync);
+				synced = 1;
+			}
 			write(audiofd, f.buf, f.sz);
 		}
 		close(audiofd);
 	}
+	if(!synced){
+		recvp(audiosync);
+		chanclose(audiosync);
+	}
 
 	sendp(audiofinished, nil);
 
@@ -140,7 +146,6 @@
 		Cresize,
 		Cnum,
 	};
-	Streamframe f;
 	Frame *frame;
 	Mousectl *mctl;
 	Keyboardctl *kctl;
@@ -284,12 +289,6 @@
 				flushimage(display, 1);
 				unlockdisplay(display);
 				break;
-			}
-
-			for(; !end && audiofd >= 0 && saudio != nil;){
-				if(Sread(saudio, &f) != 0 || f.sz == 0)
-					break;
-				write(audiofd, f.buf, f.sz);
 			}
 		}