version 1.33, 2018/06/26 07:09:38 |
version 1.34, 2018/06/26 07:10:59 |
|
|
s->pstate = SLOT_READY; |
s->pstate = SLOT_READY; |
slot_ready(s); |
slot_ready(s); |
} |
} |
|
|
|
if (s->tstate != MMC_OFF) |
|
s->tstate = MMC_STOP; |
|
|
if (s->mode & MODE_RECMASK) |
if (s->mode & MODE_RECMASK) |
abuf_done(&s->sub.buf); |
abuf_done(&s->sub.buf); |
if (s->pstate == SLOT_READY) { |
|
|
if (s->pstate == SLOT_RUN) { |
|
if (s->mode & MODE_PLAY) { |
|
/* |
|
* Don't detach, dev_cycle() will do it for us |
|
* when the buffer is drained. |
|
*/ |
|
s->pstate = SLOT_STOP; |
|
return; |
|
} |
|
slot_detach(s); |
|
} else { |
#ifdef DEBUG |
#ifdef DEBUG |
if (log_level >= 3) { |
if (log_level >= 3) { |
slot_log(s); |
slot_log(s); |
log_puts(": not drained (blocked by mmc)\n"); |
log_puts(": not drained (blocked by mmc)\n"); |
} |
} |
#endif |
#endif |
if (s->mode & MODE_PLAY) |
|
abuf_done(&s->mix.buf); |
|
s->ops->eof(s->arg); |
|
s->pstate = SLOT_INIT; |
|
} else { |
|
/* s->pstate == SLOT_RUN */ |
|
if (s->mode & MODE_PLAY) |
|
s->pstate = SLOT_STOP; |
|
else { |
|
slot_detach(s); |
|
s->pstate = SLOT_INIT; |
|
s->ops->eof(s->arg); |
|
} |
|
} |
} |
if (s->tstate != MMC_OFF) |
if (s->mode & MODE_PLAY) |
s->tstate = MMC_STOP; |
abuf_done(&s->mix.buf); |
|
s->pstate = SLOT_INIT; |
|
s->ops->eof(s->arg); |
} |
} |
|
|
void |
void |