Send dmabuf feedback for dnd icon surface, and cursor surface
This commit is contained in:
parent
726994b858
commit
5eeff3735f
1 changed files with 44 additions and 0 deletions
44
src/state.rs
44
src/state.rs
|
|
@ -826,6 +826,50 @@ impl Common {
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|seat| &seat.active_output() == output)
|
.filter(|seat| &seat.active_output() == output)
|
||||||
{
|
{
|
||||||
|
let cursor_status = seat.cursor_image_status();
|
||||||
|
|
||||||
|
if let CursorImageStatus::Surface(wl_surface) = cursor_status {
|
||||||
|
if let Some(feedback) =
|
||||||
|
advertised_node_for_surface(&wl_surface, &self.display_handle)
|
||||||
|
.and_then(|source| dmabuf_feedback(source))
|
||||||
|
{
|
||||||
|
send_dmabuf_feedback_surface_tree(
|
||||||
|
&wl_surface,
|
||||||
|
output,
|
||||||
|
surface_primary_scanout_output,
|
||||||
|
|surface, _| {
|
||||||
|
select_dmabuf_feedback(
|
||||||
|
surface,
|
||||||
|
render_element_states,
|
||||||
|
&feedback.render_feedback,
|
||||||
|
&feedback.scanout_feedback,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(icon) = get_dnd_icon(seat) {
|
||||||
|
if let Some(feedback) =
|
||||||
|
advertised_node_for_surface(&icon.surface, &self.display_handle)
|
||||||
|
.and_then(|source| dmabuf_feedback(source))
|
||||||
|
{
|
||||||
|
send_dmabuf_feedback_surface_tree(
|
||||||
|
&icon.surface,
|
||||||
|
output,
|
||||||
|
surface_primary_scanout_output,
|
||||||
|
|surface, _| {
|
||||||
|
select_dmabuf_feedback(
|
||||||
|
surface,
|
||||||
|
render_element_states,
|
||||||
|
&feedback.render_feedback,
|
||||||
|
&feedback.scanout_feedback,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(move_grab) = seat.user_data().get::<SeatMoveGrabState>() {
|
if let Some(move_grab) = seat.user_data().get::<SeatMoveGrabState>() {
|
||||||
if let Some(grab_state) = move_grab.lock().unwrap().as_ref() {
|
if let Some(grab_state) = move_grab.lock().unwrap().as_ref() {
|
||||||
for (window, _) in grab_state.element().windows() {
|
for (window, _) in grab_state.element().windows() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue