Skip to content

Commit f568ea8

Browse files
committed
fix: 修复双触控屏双屏复制切换到仅X屏模式时实际效果依然为双屏复制模式的问题
双触控屏的UUID一样,无法区分,设置之后通过屏幕的name进行区分 Log: 修复双触控屏双屏复制切换到仅X屏模式时实际效果依然为双屏复制模式的问题 Bug: https://pms.uniontech.com/bug-view-179173.html Influence: 仅单屏显示 Change-Id: Ie55b45f10a774a397c9cbd42101b446ce6013a26
1 parent e7d7578 commit f568ea8

2 files changed

Lines changed: 29 additions & 7 deletions

File tree

display/displayconf.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -674,17 +674,33 @@ func (s *SysScreenConfig) setMonitorConfigsOnlyOne(uuid string, configs SysMonit
674674
s.OnlyOneMap[uuid] = &SysMonitorModeConfig{}
675675
}
676676

677+
logger.Debug("OnlyOneConfig lenth:", len(configs))
678+
// 如果多个屏幕的UUID一样,则保存所有配置,根据屏幕名称区分应该点亮哪一个
677679
if len(configs) > 1 {
678-
// 去除非使能的 monitor
679-
var tmpCfg *SysMonitorConfig
680+
isRepeat := false
681+
mapCfg := make(map[string]bool)
680682
for _, config := range configs {
681-
if config.Enabled {
682-
tmpCfg = config
683+
_, ok := mapCfg[config.UUID]
684+
if ok {
685+
logger.Debug("config uuid is repeat")
686+
isRepeat = true
683687
break
688+
} else {
689+
mapCfg[config.UUID] = true
684690
}
685691
}
686-
if tmpCfg != nil {
687-
configs = SysMonitorConfigs{tmpCfg}
692+
if !isRepeat {
693+
// 去除非使能的 monitor
694+
var tmpCfg *SysMonitorConfig
695+
for _, config := range configs {
696+
if config.Enabled {
697+
tmpCfg = config
698+
break
699+
}
700+
}
701+
if tmpCfg != nil {
702+
configs = SysMonitorConfigs{tmpCfg}
703+
}
688704
}
689705
}
690706

display/manager.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1748,7 +1748,6 @@ func (m *Manager) buildConfigForModeOnlyOne(monitors Monitors, uuid string) (mon
17481748
//cfg.Reflect = 0
17491749
cfg.Brightness = 1
17501750
monitorCfgs = append(monitorCfgs, cfg)
1751-
return
17521751
}
17531752
}
17541753
return
@@ -1806,6 +1805,13 @@ func (m *Manager) applyModeOnlyOne(monitorsId monitorsId, monitorMap map[uint32]
18061805
}
18071806
}
18081807

1808+
if len(m.Monitors) > 1 && len(configs) > 1 && name != "" {
1809+
for _, config := range configs {
1810+
config.Enabled = config.Name == name
1811+
logger.Debug("update OnlyOneConfig", config)
1812+
}
1813+
}
1814+
18091815
err = m.applySysMonitorConfigs(DisplayModeOnlyOne, monitorsId, monitorMap, configs, options)
18101816
if err != nil {
18111817
return

0 commit comments

Comments
 (0)