sync-obj: move sync-file merging to separate function
This commit is contained in:
parent
29f3aaa93c
commit
52fae0b932
1 changed files with 22 additions and 8 deletions
|
|
@ -190,16 +190,9 @@ impl SyncObjCtx {
|
||||||
where
|
where
|
||||||
I: IntoIterator<Item = &'a SyncFile>,
|
I: IntoIterator<Item = &'a SyncFile>,
|
||||||
{
|
{
|
||||||
let mut sync_files = sync_files.into_iter();
|
let Some(fd) = merge_sync_files(sync_files)? else {
|
||||||
let Some(first) = sync_files.next() else {
|
|
||||||
return self.signal(sync_obj, point);
|
return self.signal(sync_obj, point);
|
||||||
};
|
};
|
||||||
let mut stash;
|
|
||||||
let mut fd = &*first.0;
|
|
||||||
for next in sync_files {
|
|
||||||
stash = sync_ioc_merge(fd.raw(), next.raw()).map_err(DrmError::Merge)?;
|
|
||||||
fd = &stash;
|
|
||||||
}
|
|
||||||
let dummy = self.get_dummy()?;
|
let dummy = self.get_dummy()?;
|
||||||
sync_obj_fd_to_handle(
|
sync_obj_fd_to_handle(
|
||||||
self.inner.drm.raw(),
|
self.inner.drm.raw(),
|
||||||
|
|
@ -258,3 +251,24 @@ fn destroy(drm: &OwnedFd, handle: SyncObjHandle) {
|
||||||
log::error!("Could not destroy sync obj: {}", ErrorFmt(e));
|
log::error!("Could not destroy sync obj: {}", ErrorFmt(e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn merge_sync_files<'a, I>(sync_files: I) -> Result<Option<SyncFile>, DrmError>
|
||||||
|
where
|
||||||
|
I: IntoIterator<Item = &'a SyncFile>,
|
||||||
|
{
|
||||||
|
let mut sync_files = sync_files.into_iter();
|
||||||
|
let Some(first) = sync_files.next() else {
|
||||||
|
return Ok(None);
|
||||||
|
};
|
||||||
|
let Some(second) = sync_files.next() else {
|
||||||
|
return Ok(Some(first.clone()));
|
||||||
|
};
|
||||||
|
let merge = |left: &OwnedFd, right: &OwnedFd| {
|
||||||
|
sync_ioc_merge(left.raw(), right.raw()).map_err(DrmError::Merge)
|
||||||
|
};
|
||||||
|
let mut fd = merge(first, second)?;
|
||||||
|
for next in sync_files {
|
||||||
|
fd = merge(&fd, next)?;
|
||||||
|
}
|
||||||
|
Ok(Some(SyncFile(Rc::new(fd))))
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue