@@ -10,6 +10,7 @@ use smithay::backend::renderer::damage::OutputDamageTracker;
10
10
use smithay:: backend:: renderer:: gles:: GlesRenderer ;
11
11
use smithay:: backend:: renderer:: { DebugFlags , ImportDma , ImportEgl , Renderer } ;
12
12
use smithay:: backend:: winit:: { self , WinitEvent , WinitGraphicsBackend } ;
13
+ use smithay:: input:: pointer:: CursorImageStatus ;
13
14
use smithay:: output:: { Mode , Output , PhysicalProperties , Subpixel } ;
14
15
use smithay:: reexports:: calloop:: LoopHandle ;
15
16
use smithay:: reexports:: wayland_protocols:: wp:: presentation_time:: server:: wp_presentation_feedback;
@@ -175,11 +176,26 @@ impl Winit {
175
176
pub fn render ( & mut self , niri : & mut Niri , output : & Output ) -> RenderResult {
176
177
let _span = tracy_client:: span!( "Winit::render" ) ;
177
178
179
+ let window = self . backend . window ( ) ;
180
+
181
+ // Update the cursor.
182
+ // TODO: Support surface cursors and dnd icons
183
+ let include_pointer = if let ( CursorImageStatus :: Named ( cursor_icon) , None ) =
184
+ ( niri. cursor_manager . cursor_image ( ) , niri. dnd_icon . as_ref ( ) )
185
+ {
186
+ window. set_cursor ( * cursor_icon) ;
187
+ window. set_cursor_visible ( true ) ;
188
+ false
189
+ } else {
190
+ window. set_cursor_visible ( false ) ;
191
+ true
192
+ } ;
193
+
178
194
// Render the elements.
179
195
let mut elements = niri. render :: < GlesRenderer > (
180
196
self . backend . renderer ( ) ,
181
197
output,
182
- true ,
198
+ include_pointer ,
183
199
RenderTarget :: Output ,
184
200
) ;
185
201
0 commit comments