diff --git a/src/backend/render/mod.rs b/src/backend/render/mod.rs index d844e681..7fd11a0a 100644 --- a/src/backend/render/mod.rs +++ b/src/backend/render/mod.rs @@ -28,7 +28,7 @@ use crate::{ handlers::{ compositor::FRAME_TIME_FILTER, data_device::get_dnd_icon, - screencopy::{render_session, FrameHolder, PendingImageCopyData, SessionData}, + screencopy::{render_session, FrameHolder, SessionData}, }, protocols::workspace::WorkspaceHandle, }, @@ -1150,6 +1150,7 @@ pub fn render_output<'d, R>( output: &Output, cursor_mode: CursorMode, screen_filter: &'d mut ScreenFilterStorage, + loop_handle: &calloop::LoopHandle<'static, State>, ) -> Result, RenderError> where R: Renderer @@ -1332,11 +1333,7 @@ where match result { Ok((res, mut elements)) => { for (session, frame) in output.take_pending_frames() { - if let Some(PendingImageCopyData { frame, damage, .. }) = render_session::< - _, - _, - GlesTexture, - >( + if let Some(pending_image_copy_data) = render_session::<_, _, GlesTexture>( renderer, &session.user_data().get::().unwrap(), frame, @@ -1437,7 +1434,11 @@ where }) }, )? { - frame.success(output.current_transform(), damage, now); + pending_image_copy_data.send_success_when_ready( + output.current_transform(), + loop_handle, + now, + ); } } diff --git a/src/backend/winit.rs b/src/backend/winit.rs index f0a65f9d..d515742c 100644 --- a/src/backend/winit.rs +++ b/src/backend/winit.rs @@ -63,6 +63,7 @@ impl WinitState { &self.output, CursorMode::NotDefault, &mut self.screen_filter_state, + &state.event_loop_handle, ) { Ok(RenderOutputResult { damage, states, .. }) => { std::mem::drop(fb); diff --git a/src/backend/x11.rs b/src/backend/x11.rs index 4cb4def6..356519e3 100644 --- a/src/backend/x11.rs +++ b/src/backend/x11.rs @@ -230,6 +230,7 @@ impl Surface { &self.output, render::CursorMode::NotDefault, &mut self.screen_filter_state, + &state.event_loop_handle, ) { Ok(RenderOutputResult { damage, states, .. }) => { self.surface diff --git a/src/wayland/handlers/screencopy/render.rs b/src/wayland/handlers/screencopy/render.rs index 6d157660..754c5519 100644 --- a/src/wayland/handlers/screencopy/render.rs +++ b/src/wayland/handlers/screencopy/render.rs @@ -471,8 +471,12 @@ pub fn render_workspace_to_buffer( } }; - if let Some(PendingImageCopyData { frame, damage, .. }) = result { - frame.success(transform, damage, common.clock.now()) + if let Some(pending_image_copy_data) = result { + pending_image_copy_data.send_success_when_ready( + transform, + &common.event_loop_handle, + common.clock.now(), + ); } } @@ -702,8 +706,12 @@ pub fn render_window_to_buffer( }, }; - if let Some(PendingImageCopyData { frame, damage, .. }) = result { - frame.success(Transform::Normal, damage, common.clock.now()) + if let Some(pending_image_copy_data) = result { + pending_image_copy_data.send_success_when_ready( + Transform::Normal, + &common.event_loop_handle, + common.clock.now(), + ); } } @@ -858,7 +866,11 @@ pub fn render_cursor_to_buffer( } }; - if let Some(PendingImageCopyData { frame, damage, .. }) = result { - frame.success(Transform::Normal, damage, common.clock.now()) + if let Some(pending_image_copy_data) = result { + pending_image_copy_data.send_success_when_ready( + Transform::Normal, + &common.event_loop_handle, + common.clock.now(), + ); } }