playing->sofar = sm.data;
break;
case SM_FINISHED: /* scratched the playing track */
case SM_STILLBORN: /* scratched too early */
case SM_UNKNOWN: /* scratched WAY too early */
playing->sofar = sm.data;
break;
case SM_FINISHED: /* scratched the playing track */
case SM_STILLBORN: /* scratched too early */
case SM_UNKNOWN: /* scratched WAY too early */
if((playing->state == playing_unplayed
|| playing->state == playing_started)
&& sm.type == SM_FINISHED)
if((playing->state == playing_unplayed
|| playing->state == playing_started)
&& sm.type == SM_FINISHED)
* a subprocess. See speaker.c for further discussion. */
struct speaker_message sm[1];
memset(sm, 0, sizeof sm);
* a subprocess. See speaker.c for further discussion. */
struct speaker_message sm[1];
memset(sm, 0, sizeof sm);
if((playing->type & DISORDER_PLAYER_TYPEMASK) == DISORDER_PLAYER_RAW) {
memset(&sm, 0, sizeof sm);
sm.type = SM_CANCEL;
if((playing->type & DISORDER_PLAYER_TYPEMASK) == DISORDER_PLAYER_RAW) {
memset(&sm, 0, sizeof sm);
sm.type = SM_CANCEL;
speaker_send(speaker_fd, &sm);
D(("sending SM_CANCEL for %s", playing->id));
}
speaker_send(speaker_fd, &sm);
D(("sending SM_CANCEL for %s", playing->id));
}