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 _______________________________________________ beast mailing list [email protected] http://mail.gnome.org/mailman/listinfo/beast
