From 7ca5a0b977e049e59a8981f5c6b3c696c472a149 Mon Sep 17 00:00:00 2001 From: fufesou <13586388+fufesou@users.noreply.github.com> Date: Tue, 28 May 2024 22:33:28 +0800 Subject: [PATCH] fix: switch texture, do not input os password (#8178) * refact: switch texture, do not input os password Signed-off-by: fufesou * Switch texture, refresh video Signed-off-by: fufesou --------- Signed-off-by: fufesou --- flutter/lib/models/model.dart | 6 +++++- src/ui_session_interface.rs | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index 0200a1af3..4ecf36856 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -112,6 +112,7 @@ class FfiModel with ChangeNotifier { RxBool waitForImageDialogShow = true.obs; Timer? waitForImageTimer; RxBool waitForFirstImage = true.obs; + bool isRefreshing = false; Rect? get rect => _rect; bool get isOriginalResolutionSet => @@ -392,6 +393,7 @@ class FfiModel with ChangeNotifier { Map evt, SessionID sessionId, String peerId) { parent.target?.imageModel.setUseTextureRender(evt['v'] == 'Y'); waitForFirstImage.value = true; + isRefreshing = true; showConnectedWaitingForImage(parent.target!.dialogManager, sessionId, 'success', 'Successful', kMsgboxTextWaitingForImage); } @@ -677,7 +679,7 @@ class FfiModel with ChangeNotifier { ); waitForImageDialogShow.value = true; waitForImageTimer = Timer(Duration(milliseconds: 1500), () { - if (waitForFirstImage.isTrue) { + if (waitForFirstImage.isTrue && !isRefreshing) { bind.sessionInputOsPassword(sessionId: sessionId, value: ''); } }); @@ -795,6 +797,7 @@ class FfiModel with ChangeNotifier { if (displays.isNotEmpty) { _reconnects = 1; waitForFirstImage.value = true; + isRefreshing = false; } Map features = json.decode(evt['features']); _pi.features.privacyMode = features['privacy_mode'] == 1; @@ -2348,6 +2351,7 @@ class FFI { /// Mobile reuse FFI void mobileReset() { ffiModel.waitForFirstImage.value = true; + ffiModel.isRefreshing = false; ffiModel.waitForImageDialogShow.value = true; ffiModel.waitForImageTimer?.cancel(); ffiModel.waitForImageTimer = null; diff --git a/src/ui_session_interface.rs b/src/ui_session_interface.rs index 969221f78..2df18ae42 100644 --- a/src/ui_session_interface.rs +++ b/src/ui_session_interface.rs @@ -473,6 +473,7 @@ impl Session { pub fn use_texture_render_changed(&self) { self.send(Data::ResetDecoder(None)); self.change_prefer_codec(); + self.send(Data::Message(LoginConfigHandler::refresh())); } pub fn restart_remote_device(&self) {