diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index 7c0b3a193..400aff2d1 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -1291,7 +1291,12 @@ impl Remote { Some(misc::Union::SwitchDisplay(s)) => { #[cfg(feature = "flutter")] { - self.handler.cache_flutter.write().unwrap().sp = s.clone(); + self.handler + .cache_flutter + .write() + .unwrap() + .sp + .replace(s.clone()); } self.handler.handle_peer_switch_display(&s); self.video_sender.send(MediaData::Reset).ok(); diff --git a/src/ui_session_interface.rs b/src/ui_session_interface.rs index 50bc23339..1e0f6b1b9 100644 --- a/src/ui_session_interface.rs +++ b/src/ui_session_interface.rs @@ -52,7 +52,7 @@ const CHANGE_RESOLUTION_VALID_TIMEOUT_SECS: u64 = 15; #[derive(Default)] pub struct CacheFlutter { pub pi: PeerInfo, - pub sp: SwitchDisplay, + pub sp: Option, pub cursor_data: HashMap, pub cursor_id: u64, } @@ -1197,7 +1197,9 @@ impl Session { pub fn restore_flutter_cache(&mut self) { let pi = self.cache_flutter.read().unwrap().pi.clone(); self.handle_peer_info(pi); - self.handle_peer_switch_display(&self.cache_flutter.read().unwrap().sp); + if let Some(sp) = self.cache_flutter.read().unwrap().sp.as_ref() { + self.handle_peer_switch_display(sp); + } for (_, cd) in self.cache_flutter.read().unwrap().cursor_data.iter() { self.set_cursor_data(cd.clone()); }