fix a stupid bug where i was storing the decode_pid directorly from fork()
call, and since decode_pid is shared now, it may get assigned zero after the parent assigns it the true pid, not good!! git-svn-id: https://svn.musicpd.org/mpd/trunk@124 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
cfd0e18dc4
commit
41b63bbe47
|
@ -114,6 +114,8 @@ int waitOnDecode(PlayerControl * pc, AudioFormat * af, DecoderControl * dc,
|
|||
|
||||
if(dc->start || dc->error!=DECODE_ERROR_NOERROR) {
|
||||
strncpy(pc->erroredFile,pc->file,MAXPATHLEN);
|
||||
printf("error: %i, start: %i, decode_pid: %i\n",dc->error,
|
||||
dc->start,*decode_pid);
|
||||
pc->error = PLAYER_ERROR_FILE;
|
||||
quitDecode(pc,dc);
|
||||
return -1;
|
||||
|
@ -198,9 +200,9 @@ void decodeSeek(PlayerControl * pc, AudioFormat * af, DecoderControl * dc,
|
|||
int decoderInit(PlayerControl * pc, Buffer * cb, AudioFormat *af,
|
||||
DecoderControl * dc) {
|
||||
decode_pid = &(pc->decode_pid);
|
||||
*decode_pid = fork();
|
||||
int pid = fork();
|
||||
|
||||
if(*decode_pid==0) {
|
||||
if(pid==0) {
|
||||
/* CHILD */
|
||||
|
||||
while(1) {
|
||||
|
@ -247,11 +249,12 @@ int decoderInit(PlayerControl * pc, Buffer * cb, AudioFormat *af,
|
|||
exit(0);
|
||||
/* END OF CHILD */
|
||||
}
|
||||
else if(*decode_pid<0) {
|
||||
else if(pid<0) {
|
||||
strncpy(pc->erroredFile,pc->file,MAXPATHLEN);
|
||||
pc->error = PLAYER_ERROR_SYSTEM;
|
||||
return -1;
|
||||
}
|
||||
else *decode_pid = pid;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue