D(("SM_PAUSED %s %ld", sm.id, sm.data));
playing->sofar = sm.data;
break;
- case SM_FINISHED:
- /* the playing track finished */
- D(("SM_FINISHED %s", sm.id));
- finished(ev);
+ case SM_FINISHED: /* scratched the playing track */
+ case SM_STILLBORN: /* scratched too early */
+ case SM_UNKNOWN: /* scratched WAY too early */
+ if(playing && !strcmp(sm.id, playing->id))
+ finished(ev);
break;
case SM_PLAYING:
/* track ID is playing, DATA seconds played */
memset(&addr, 0, sizeof addr);
addr.sun_family = AF_UNIX;
snprintf(addr.sun_path, sizeof addr.sun_path,
- "%s/speaker", config->home);
+ "%s/speaker/socket", config->home);
sfd = xsocket(PF_UNIX, SOCK_STREAM, 0);
if(connect(sfd, (const struct sockaddr *)&addr, sizeof addr) < 0)
fatal(errno, "connecting to %s", addr.sun_path);
* (but it should be for play_track() */
execlp("disorder-normalize", "disorder-normalize",
log_default == &log_syslog ? "--syslog" : "--no-syslog",
+ "--config", configfile,
(char *)0);
fatal(errno, "executing disorder-normalize");
/* end of the innermost fork */