partial writes in bse-jack?
- From: Tim Janik <timj imendio com>
- To: Stefan Westerfeld <stefan space twc de>
- Cc: Beasty Crowd <beast gnome org>
- Subject: partial writes in bse-jack?
- Date: Sun, 4 Jun 2006 02:46:38 +0200 (CEST)
hi Stefan.
i'm wondering how you could ever encounter partial writes
in bse-jack. i.e. jack_device_write() being called with a
full engine block and not enough space in the ringbuffer
being available to write all the data:
1) why is jack_device_write() being called when there
was no prior jack_device_check_io() that returned TRUE
or timeout==0?
2) why would jack_device_check_io() return TRUE if not
enough ringbuffer data can be written?
maybe helpful remarks:
- bseenginemaster.c:master_poll_check() checks the poll functions
for the master thread and decides whether data processing is
neccessary, flagged in bseenginemaster.c:master_need_process.
- the only current poll function is added via bse_job_add_poll() in
bsepcmmodule.c: bsepcmmodule.c:bse_pcm_module_poll().
- in this case, the poll function bse_pcm_module_poll() simply passes
on the PCM driver's check_io() results 1:1.
- the engine shouldn't start processing data, if no poll funciton
returned TRUE or *timeout==0.
so in theory, if your check_io() function was correctly implemented,
i'd expect partial writes to never occour. (that being said, it might
still make sense to guard against them via a Cond or similar, in case
more poll funcitons are being added in the future.)
---
ciaoTJ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]