ref: 1791bae9029685d63bf022ae1cb06093dbce598e
parent: ba4b0723d9e6d6ec72ca54016a932e72fbae46f7
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Wed Jan 15 21:50:25 EST 2025
sdl2 mixer: use play(1) instead of games/midi (thanks qwx)
--- a/libnpe_sdl2/mixer.c
+++ b/libnpe_sdl2/mixer.c
@@ -2,14 +2,8 @@
#include <SDL2/SDL_mixer.h>
-int audiofd = -1;
-int musicpipe[2] = {-1, -1};
-
static int forkerpid = -1;
-static int audiopid = -1;
-void musicproc(void *);
-
static int musicvol = 128;
static int musicpaused = 0;
@@ -124,9 +118,6 @@
void
Mix_CloseAudio(void)
{
- if(audiopid > 0)
- postnote(PNPROC, audiopid, "quit");
- audiopid = -1;
}
int
@@ -142,11 +133,6 @@
sysfatal("exec: %r\n");
}
waitpid();
- pipe(musicpipe);
- if(fork() == 0){
- musicproc(nil);
- sysfatal("exec musicproc: %r");
- }
return flags;
}
@@ -209,12 +195,9 @@
n = loops;
while(loops == -1 || n-- > 0){
- switch(rfork(RFPROC|RFFDG)){
+ switch(rfork(RFPROC|RFCFDG)){
case 0:
- dup(musicpipe[1], 1);
- close(musicpipe[1]);
- close(musicpipe[0]);
- execl("/bin/games/midi", "midi", "-c", music->loc, nil);
+ execl("/bin/play", "play", music->loc, nil);
sysfatal("exec: %r");
break;
default:
@@ -260,25 +243,4 @@
if(freesrc)
SDL_RWclose(src);
return m;
-}
-
-void
-musicproc(void *)
-{
- int fd;
- static char buf[8192];
- int n;
-
- fd = open("/dev/audio", OWRITE);
- if(fd < 0)
- sysfatal("musicproc: %r");
-
- close(musicpipe[1]);
- threadsetname("musicproc");
- for(;;){
- n = read(musicpipe[0], buf, sizeof buf);
- if(n < 0)
- threadexits(nil);
- write(fd, buf, n);
- }
}
--
⑨