@@ -180,7 +180,6 @@ struct SessionInner {
180
180
wayland_helper : WaylandHelper ,
181
181
capture_session : CaptureSession ,
182
182
capture_cursor_session : Option < ( CaptureCursorSession , CaptureSession ) > ,
183
- capture_cursor_formats : Mutex < Option < Formats > > ,
184
183
condvar : Condvar ,
185
184
state : Mutex < SessionState > ,
186
185
}
@@ -244,14 +243,15 @@ impl Session {
244
243
receiver. await . unwrap ( )
245
244
}
246
245
247
- // Should only be called once
246
+ // XXX Should only be called once
248
247
fn cursor_stream ( & self ) -> Option < cursor_stream:: CursorStream > {
249
248
let Some ( ( _, capture_session) ) = & self . 0 . capture_cursor_session else {
250
249
return None ;
251
250
} ;
252
- Some ( cursor_stream:: CursorStream {
253
- capture_session : capture_session. clone ( ) ,
254
- } )
251
+ Some ( cursor_stream:: CursorStream :: new (
252
+ capture_session,
253
+ & self . 0 . wayland_helper . inner . qh ,
254
+ ) )
255
255
}
256
256
}
257
257
@@ -414,6 +414,8 @@ impl WaylandHelper {
414
414
CursorCaptureSessionData {
415
415
session : weak_session. clone ( ) ,
416
416
session_data : ScreencopySessionData :: default ( ) ,
417
+ waker : Mutex :: new ( None ) ,
418
+ formats : Mutex :: new ( None ) ,
417
419
} ,
418
420
)
419
421
. unwrap ( ) ;
@@ -427,7 +429,6 @@ impl WaylandHelper {
427
429
wayland_helper : self . clone ( ) ,
428
430
capture_session,
429
431
capture_cursor_session,
430
- capture_cursor_formats : Mutex :: new ( None ) ,
431
432
condvar : Condvar :: new ( ) ,
432
433
state : Default :: default ( ) ,
433
434
}
@@ -658,9 +659,7 @@ impl ScreencopyHandler for AppData {
658
659
data. formats = Some ( formats. clone ( ) ) ;
659
660
} ) ;
660
661
} else if let Some ( data) = session. data :: < CursorCaptureSessionData > ( ) {
661
- if let Some ( session_inner) = data. session . upgrade ( ) {
662
- * session_inner. capture_cursor_formats . lock ( ) . unwrap ( ) = Some ( formats. clone ( ) ) ;
663
- }
662
+ * data. formats . lock ( ) . unwrap ( ) = Some ( formats. clone ( ) ) ;
664
663
println ! ( "Cursor session formats: {:?}" , formats) ;
665
664
}
666
665
}
@@ -860,6 +859,8 @@ impl ScreencopySessionDataExt for SessionData {
860
859
struct CursorCaptureSessionData {
861
860
session : Weak < SessionInner > ,
862
861
session_data : ScreencopySessionData ,
862
+ waker : Mutex < Option < std:: task:: Waker > > ,
863
+ formats : Mutex < Option < Formats > > ,
863
864
}
864
865
865
866
impl ScreencopySessionDataExt for CursorCaptureSessionData {
0 commit comments