Lines Matching refs:ch
180 struct pcm_channel *ch;
218 CHN_FOREACH(ch, c, children.busy) {
219 CHN_LOCK(ch);
220 if (CHN_STOPPED(ch) || (ch->flags & CHN_F_DIRTY)) {
221 CHN_UNLOCK(ch);
225 if ((c->flags & CHN_F_DIRTY) && VCHAN_SYNC_REQUIRED(ch)) {
226 if (vchan_sync(ch) != 0) {
227 CHN_UNLOCK(ch);
232 bs = ch->bufsoft;
233 if (ch->flags & CHN_F_MMAP)
237 CHN_UNLOCK(ch);
242 cnt = FEEDER_FEED(ch->feeder, ch, bs->tmpbuf,
253 ch->xruns++;
254 CHN_UNLOCK(ch);
285 struct pcm_channel *ch;
314 CHN_FOREACH(ch, c, children.busy) {
315 CHN_LOCK(ch);
316 if (CHN_STOPPED(ch) || (ch->flags & CHN_F_DIRTY)) {
317 CHN_UNLOCK(ch);
321 if ((c->flags & CHN_F_DIRTY) && VCHAN_SYNC_REQUIRED(ch)) {
322 if (vchan_sync(ch) != 0) {
323 CHN_UNLOCK(ch);
328 if ((ch->flags & CHN_F_MMAP) && !(ch->flags & CHN_F_CLOSING))
329 sndbuf_acquire(ch->bufsoft, NULL,
330 sndbuf_getfree(ch->bufsoft));
338 (ch->format & AFMT_PASSTHROUGH)) {
339 rcnt = SND_FXROUND(FEEDER_FEED(ch->feeder, ch,
340 b, count, ch->bufsoft), sz);
343 FEEDER_FEED(ch->feeder, ch, tmp, count,
344 ch->bufsoft);
351 if (passthrough == 0 && (ch->flags & CHN_F_EXCLUSIVE)) {
352 rcnt = SND_FXROUND(FEEDER_FEED(ch->feeder, ch,
353 b, count, ch->bufsoft), sz);
356 FEEDER_FEED(ch->feeder, ch, tmp, count,
357 ch->bufsoft);
360 rcnt = SND_FXROUND(FEEDER_FEED(ch->feeder, ch,
361 b, count, ch->bufsoft), sz);
364 cnt = SND_FXROUND(FEEDER_FEED(ch->feeder, ch,
365 tmp, count, ch->bufsoft), sz);
379 CHN_UNLOCK(ch);