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
|
||||
I: IntoIterator<Item = &'a SyncFile>,
|
||||
{
|
||||
let mut sync_files = sync_files.into_iter();
|
||||
let Some(first) = sync_files.next() else {
|
||||
let Some(fd) = merge_sync_files(sync_files)? else {
|
||||
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()?;
|
||||
sync_obj_fd_to_handle(
|
||||
self.inner.drm.raw(),
|
||||
|
|
@ -258,3 +251,24 @@ fn destroy(drm: &OwnedFd, handle: SyncObjHandle) {
|
|||
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