From 796b66b057047d3bc93846e4fe5f91561eabcdb9 Mon Sep 17 00:00:00 2001 From: fufesou Date: Fri, 26 Apr 2024 22:34:11 +0800 Subject: [PATCH] fix: multi-window, init perms (#7839) Signed-off-by: fufesou --- flutter/lib/models/model.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index 65e29b2fa..8f1bfe1c2 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -50,6 +50,8 @@ class CachedPeerData { Map peerInfo = {}; List> cursorDataList = []; Map lastCursorId = {}; + Map permissions = {}; + bool secure = false; bool direct = false; @@ -62,6 +64,7 @@ class CachedPeerData { 'peerInfo': peerInfo, 'cursorDataList': cursorDataList, 'lastCursorId': lastCursorId, + 'permissions': permissions, 'secure': secure, 'direct': direct, }); @@ -77,6 +80,9 @@ class CachedPeerData { data.cursorDataList.add(cursorData); } data.lastCursorId = map['lastCursorId']; + map['permissions'].forEach((key, value) { + data.permissions[key] = value; + }); data.secure = map['secure']; data.direct = map['direct']; return data; @@ -116,6 +122,10 @@ class FfiModel with ChangeNotifier { _pi.tryGetDisplayIfNotAllDisplay()?.isOriginalResolution ?? false; Map get permissions => _permissions; + setPermissions(Map permissions) { + _permissions.clear(); + _permissions.addAll(permissions); + } bool? get secure => _secure; @@ -138,6 +148,7 @@ class FfiModel with ChangeNotifier { FfiModel(this.parent) { clear(); sessionId = parent.target!.sessionId; + cachedPeerData.permissions = _permissions; } Rect? globalDisplaysRect() => _getDisplaysRect(_pi.displays, true); @@ -2342,6 +2353,7 @@ class FFI { debugPrint('Unreachable, the cached data cannot be decoded.'); return; } + ffiModel.setPermissions(data.permissions); await ffiModel.handleCachedPeerData(data, id); await sessionRefreshVideo(sessionId, ffiModel.pi); await bind.sessionRequestNewDisplayInitMsgs(