Use ThreadExecutor instead of calloop executor

I thought the calloop executor had been fixed, but it still seems to
have issues that were preventing capture of continuous frames from
working consistently.

Fixes https://github.com/pop-os/cosmic-workspaces-epoch/issues/160.
This commit is contained in:
Ian Douglas Scott 2025-04-15 12:34:37 -07:00
parent 7ab1f93acf
commit 74270a2deb
4 changed files with 21 additions and 20 deletions

View file

@ -159,19 +159,17 @@ impl ScreencopyHandler for AppData {
let conn = conn.clone();
let release = session.release.take();
let qh = qh.clone();
self.scheduler
.schedule(async move {
if let Some(release) = release {
// Wait for buffer to be released by server
release.await;
}
let mut session = capture_clone.session.lock().unwrap();
let Some(session) = session.as_mut() else {
return;
};
session.attach_buffer_and_commit(&capture_clone, &conn, &qh);
})
.unwrap();
self.thread_pool.spawn_ok(async move {
if let Some(release) = release {
// Wait for buffer to be released by server
release.await;
}
let mut session = capture_clone.session.lock().unwrap();
let Some(session) = session.as_mut() else {
return;
};
session.attach_buffer_and_commit(&capture_clone, &conn, &qh);
});
let front = session.buffers.as_mut().unwrap().first_mut().unwrap();
let (buffer, release) = SubsurfaceBuffer::new(front.backing.clone());