version 1.53, 2010/11/04 17:55:28 |
version 1.54, 2011/04/08 13:00:57 |
|
|
f->xrun, f->opt->maxweight); |
f->xrun, f->opt->maxweight); |
if (f->mode & MODE_PLAY) |
if (f->mode & MODE_PLAY) |
dev_setvol(f->dev, rbuf, MIDI_TO_ADATA(f->vol)); |
dev_setvol(f->dev, rbuf, MIDI_TO_ADATA(f->vol)); |
|
|
/* |
|
* Send the initial position, if needed. |
|
*/ |
|
for (;;) { |
|
if (!sock_write(f)) |
|
break; |
|
} |
|
} |
} |
|
|
void |
void |
|
|
aproc_del(f->pipe.file.rproc); |
aproc_del(f->pipe.file.rproc); |
return 0; |
return 0; |
} |
} |
if (f->rstate == SOCK_RRET) { |
|
if (f->wstate != SOCK_WIDLE || |
|
!sock_wmsg(f, &f->rmsg, &f->rtodo)) |
|
return 0; |
|
#ifdef DEBUG |
|
if (debug_level >= 3) { |
|
sock_dbg(f); |
|
dbg_puts(": RRET done\n"); |
|
} |
|
#endif |
|
if (f->pstate == SOCK_MIDI && (f->mode & MODE_MIDIOUT)) { |
|
f->rstate = SOCK_RDATA; |
|
f->rtodo = 0; |
|
} else { |
|
f->rstate = SOCK_RMSG; |
|
f->rtodo = sizeof(struct amsg); |
|
} |
|
} |
|
return 1; |
return 1; |
} |
} |
|
|
|
|
#endif |
#endif |
return 0; |
return 0; |
} |
} |
|
for (;;) { |
|
/* |
|
* send pending ACKs, initial positions, initial volumes |
|
*/ |
|
if (!sock_write(f)) |
|
break; |
|
} |
return 1; |
return 1; |
} |
} |
|
|
|
|
#ifdef DEBUG |
#ifdef DEBUG |
if (debug_level >= 4) { |
if (debug_level >= 4) { |
sock_dbg(f); |
sock_dbg(f); |
dbg_puts(": writing "); |
dbg_puts(": writing"); |
dbg_putu(f->wtodo); |
if (f->wstate != SOCK_WIDLE) { |
dbg_puts(" todo\n"); |
dbg_puts(" todo = "); |
|
dbg_putu(f->wtodo); |
|
} |
|
dbg_puts("\n"); |
} |
} |
#endif |
#endif |
switch (f->wstate) { |
switch (f->wstate) { |