@@ -826,6 +826,50 @@ impl Common {
826826 . iter ( )
827827 . filter ( |seat| & seat. active_output ( ) == output)
828828 {
829+ let cursor_status = seat. cursor_image_status ( ) ;
830+
831+ if let CursorImageStatus :: Surface ( wl_surface) = cursor_status {
832+ if let Some ( feedback) =
833+ advertised_node_for_surface ( & wl_surface, & self . display_handle )
834+ . and_then ( |source| dmabuf_feedback ( source) )
835+ {
836+ send_dmabuf_feedback_surface_tree (
837+ & wl_surface,
838+ output,
839+ surface_primary_scanout_output,
840+ |surface, _| {
841+ select_dmabuf_feedback (
842+ surface,
843+ render_element_states,
844+ & feedback. render_feedback ,
845+ & feedback. scanout_feedback ,
846+ )
847+ } ,
848+ ) ;
849+ }
850+ }
851+
852+ if let Some ( icon) = get_dnd_icon ( seat) {
853+ if let Some ( feedback) =
854+ advertised_node_for_surface ( & icon. surface , & self . display_handle )
855+ . and_then ( |source| dmabuf_feedback ( source) )
856+ {
857+ send_dmabuf_feedback_surface_tree (
858+ & icon. surface ,
859+ output,
860+ surface_primary_scanout_output,
861+ |surface, _| {
862+ select_dmabuf_feedback (
863+ surface,
864+ render_element_states,
865+ & feedback. render_feedback ,
866+ & feedback. scanout_feedback ,
867+ )
868+ } ,
869+ ) ;
870+ }
871+ }
872+
829873 if let Some ( move_grab) = seat. user_data ( ) . get :: < SeatMoveGrabState > ( ) {
830874 if let Some ( grab_state) = move_grab. lock ( ) . unwrap ( ) . as_ref ( ) {
831875 for ( window, _) in grab_state. element ( ) . windows ( ) {
0 commit comments