From 3c6ddd7403968a05a71d30e1d60f76d217e9156d Mon Sep 17 00:00:00 2001 From: fufesou <13586388+fufesou@users.noreply.github.com> Date: Fri, 9 Aug 2024 21:17:06 +0800 Subject: [PATCH] fix: multi-displays, displays changed, switch idx (#9006) Use init display index as the primary index. But when displays changed, the primary display may also changes. No need to change the old primary index. But we need to make sure that the old primary index does not exceed the display number. Signed-off-by: fufesou --- flutter/lib/models/model.dart | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index 155103776..6a9009026 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -1003,14 +1003,15 @@ class FfiModel with ChangeNotifier { // Notify to switch display msgBox(sessionId, 'custom-nook-nocancel-hasclose-info', 'Prompt', 'display_is_plugged_out_msg', '', parent.target!.dialogManager); - final newDisplay = pi.primaryDisplay == kInvalidDisplayIndex - ? 0 - : pi.primaryDisplay; - final displays = newDisplay; + final isPeerPrimaryDisplayValid = + pi.primaryDisplay == kInvalidDisplayIndex || + pi.primaryDisplay >= pi.displays.length; + final newDisplay = + isPeerPrimaryDisplayValid ? 0 : pi.primaryDisplay; bind.sessionSwitchDisplay( isDesktop: isDesktop, sessionId: sessionId, - value: Int32List.fromList([displays]), + value: Int32List.fromList([newDisplay]), ); if (_pi.isSupportMultiUiSession) {