Végre van egy Memory Safety DE. Akkor ez garantáltan mentes lesz minden problémától. 5,3 Mb az src könyvtár egész biztos vagyok benne hogy csak Rust -al lehetett biztonságosra megírni.
src/pw_utils.rs:
unsafe {
let spa_buffer = (*buffer).buffer;
let fd = (*(*spa_buffer).datas).fd;
let dmabuf = self.inner.borrow().dmabufs[&fd].clone();
match render_to_dmabuf(
renderer,
dmabuf,
size,
scale,
Transform::Normal,
elements.iter().rev(),
) {
Ok(sync_point) => {
mark_buffer_as_good(pw_buffer, &mut self.sequence_counter);
trace!("queueing buffer with seq={}", self.sequence_counter);
self.queue_after_sync(pw_buffer, sync_point);
true
}
Err(err) => {
warn!("error rendering to dmabuf: {err:?}");
return_unused_buffer(&self.stream, pw_buffer);
false
}
}
}
Nem értek a Rust-hoz, de nagyon kíváncsi lennék mi történik ha nincs 'self.inner.borrow().dmabufs[&fd]' vagy a legelső sorban (*buffer).buffer