in src/backend/mod.rs [1670:1706]
fn get_fixed_latency(devid: AudioObjectID, devtype: DeviceType) -> u32 {
debug_assert_running_serially();
let device_latency = match get_device_latency(devid, devtype) {
Ok(latency) => latency,
Err(e) => {
cubeb_log!(
"Cannot get the device latency for device {} in {:?} scope. Error: {}",
devid,
devtype,
e
);
0 // default device latency
}
};
let stream_latency = get_device_streams(devid, devtype).and_then(|devstreams| {
if devstreams.is_empty() {
cubeb_log!(
"No stream on device {} in {:?} scope!",
devid,
devtype
);
Ok(0) // default stream latency
} else {
get_stream_latency(devstreams[0].stream)
}
}).inspect_err(|e| {
cubeb_log!(
"Cannot get the stream, or the latency of the first stream on device {} in {:?} scope. Error: {}",
devid,
devtype,
e
);
}).unwrap_or(0); // default stream latency
device_latency + stream_latency
}