From: Richard Kettlewell Date: Sun, 14 Feb 2010 10:46:23 +0000 (+0000) Subject: Don't insert a scratch track is play is disabled. X-Git-Tag: 5.0~13 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/62416f14c03628e3ed3073a9ef38a4d97281d9e0?ds=sidebyside Don't insert a scratch track is play is disabled. --- diff --git a/server/play.c b/server/play.c index 8f1bd1d..99ef483 100644 --- a/server/play.c +++ b/server/play.c @@ -732,14 +732,20 @@ void scratch(const char *who, const char *id) { speaker_send(speaker_fd, &sm); D(("sending SM_CANCEL for %s", playing->id)); } - /* Try to make sure there is a scratch */ - ensure_next_scratch(NULL); - /* Insert it at the head of the queue */ - if(next_scratch){ - next_scratch->submitter = who; - queue_insert_entry(&qhead, next_scratch); - eventlog_raw("queue", queue_marshall(next_scratch), (const char *)0); - next_scratch = NULL; + /* If playing is enabled then add a scratch to the queue. Having a scratch + * appear in the queue when further play is disabled is weird and + * contradicts implicit assumptions made elsewhere, so we try to avoid + * it. */ + if(playing_is_enabled()) { + /* Try to make sure there is a scratch */ + ensure_next_scratch(NULL); + /* Insert it at the head of the queue */ + if(next_scratch){ + next_scratch->submitter = who; + queue_insert_entry(&qhead, next_scratch); + eventlog_raw("queue", queue_marshall(next_scratch), (const char *)0); + next_scratch = NULL; + } } notify_scratch(playing->track, playing->submitter, who, xtime(0) - playing->played);