From f568ea8b6b5b4cb4cb0e9ca5fba1266dcef548c1 Mon Sep 17 00:00:00 2001 From: Mars-CB Date: Wed, 4 Jan 2023 09:37:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=8C=E8=A7=A6?= =?UTF-8?q?=E6=8E=A7=E5=B1=8F=E5=8F=8C=E5=B1=8F=E5=A4=8D=E5=88=B6=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=88=B0=E4=BB=85X=E5=B1=8F=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=97=B6=E5=AE=9E=E9=99=85=E6=95=88=E6=9E=9C=E4=BE=9D=E7=84=B6?= =?UTF-8?q?=E4=B8=BA=E5=8F=8C=E5=B1=8F=E5=A4=8D=E5=88=B6=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 双触控屏的UUID一样,无法区分,设置之后通过屏幕的name进行区分 Log: 修复双触控屏双屏复制切换到仅X屏模式时实际效果依然为双屏复制模式的问题 Bug: https://pms.uniontech.com/bug-view-179173.html Influence: 仅单屏显示 Change-Id: Ie55b45f10a774a397c9cbd42101b446ce6013a26 --- display/displayconf.go | 28 ++++++++++++++++++++++------ display/manager.go | 8 +++++++- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/display/displayconf.go b/display/displayconf.go index 2aa688d6..b8d29f4d 100644 --- a/display/displayconf.go +++ b/display/displayconf.go @@ -674,17 +674,33 @@ func (s *SysScreenConfig) setMonitorConfigsOnlyOne(uuid string, configs SysMonit s.OnlyOneMap[uuid] = &SysMonitorModeConfig{} } + logger.Debug("OnlyOneConfig lenth:", len(configs)) + // 如果多个屏幕的UUID一样,则保存所有配置,根据屏幕名称区分应该点亮哪一个 if len(configs) > 1 { - // 去除非使能的 monitor - var tmpCfg *SysMonitorConfig + isRepeat := false + mapCfg := make(map[string]bool) for _, config := range configs { - if config.Enabled { - tmpCfg = config + _, ok := mapCfg[config.UUID] + if ok { + logger.Debug("config uuid is repeat") + isRepeat = true break + } else { + mapCfg[config.UUID] = true } } - if tmpCfg != nil { - configs = SysMonitorConfigs{tmpCfg} + if !isRepeat { + // 去除非使能的 monitor + var tmpCfg *SysMonitorConfig + for _, config := range configs { + if config.Enabled { + tmpCfg = config + break + } + } + if tmpCfg != nil { + configs = SysMonitorConfigs{tmpCfg} + } } } diff --git a/display/manager.go b/display/manager.go index 9e4a2c51..cdfae1b8 100644 --- a/display/manager.go +++ b/display/manager.go @@ -1748,7 +1748,6 @@ func (m *Manager) buildConfigForModeOnlyOne(monitors Monitors, uuid string) (mon //cfg.Reflect = 0 cfg.Brightness = 1 monitorCfgs = append(monitorCfgs, cfg) - return } } return @@ -1806,6 +1805,13 @@ func (m *Manager) applyModeOnlyOne(monitorsId monitorsId, monitorMap map[uint32] } } + if len(m.Monitors) > 1 && len(configs) > 1 && name != "" { + for _, config := range configs { + config.Enabled = config.Name == name + logger.Debug("update OnlyOneConfig", config) + } + } + err = m.applySysMonitorConfigs(DisplayModeOnlyOne, monitorsId, monitorMap, configs, options) if err != nil { return