@@ -2092,30 +2092,30 @@ func (m *Manager) applySysMonitorConfigs(mode byte, monitorsId monitorsId, monit
20922092 m .setPropDisplayMode (mode )
20932093 }
20942094
2095- // 异步处理亮度设置
2096- go func () {
2097- for _ , config := range configs {
2098- if config .Enabled {
2099- err := m .setBrightness (config .Name , config .Brightness )
2100- if err != nil {
2101- logger .Warningf ("call setBrightness err: %v, config.Name: %s" , err , config .Name )
2102- monitors := m .getConnectedMonitors ()
2103- monitor := monitors .GetByUuid (config .UUID )
2104- // 插拔过程中存在异常monitor空
2105- if monitor == nil {
2106- logger .Warning ("call GetByUuid failed: " , config .UUID )
2107- continue
2108- }
2095+ // 不能放在线程中设置亮度,因为后续在设置色温的时候亮度可能还没有设置完成,这时亮度的属性值还没有真正的改变
2096+ // cfg的值没有设置到monitorMap中,后面再设置色温的时候拿到的monitorMap中的亮度值就是错误的。
2097+ // TODO:色温和设置亮度都调用了setBrightness的接口,逻辑重复了,需要优化。
2098+ for _ , config := range configs {
2099+ if config .Enabled {
2100+ err := m .setBrightness (config .Name , config .Brightness )
2101+ if err != nil {
2102+ logger .Warningf ("call setBrightness err: %v, config.Name: %s" , err , config .Name )
2103+ monitors := m .getConnectedMonitors ()
2104+ monitor := monitors .GetByUuid (config .UUID )
2105+ // 插拔过程中存在异常monitor空
2106+ if monitor == nil {
2107+ logger .Warning ("call GetByUuid failed: " , config .UUID )
2108+ continue
2109+ }
21092110
2110- err := m .setBrightness (monitor .Name , config .Brightness )
2111- if err != nil {
2112- logger .Warningf ("call setBrightness err: %v, monitor.Name: %s" , err , monitor .Name )
2113- }
2111+ err := m .setBrightness (monitor .Name , config .Brightness )
2112+ if err != nil {
2113+ logger .Warningf ("call setBrightness err: %v, monitor.Name: %s" , err , monitor .Name )
21142114 }
21152115 }
21162116 }
2117- m . syncPropBrightness ()
2118- } ()
2117+ }
2118+ m . syncPropBrightness ()
21192119
21202120 // NOTE: Primary 和 PrimaryRect 属性改变信号应该在 DisplayMode 属性改变之后,否则会引发前端 dcc 的 bug。
21212121 err = m .mm .setMonitorPrimary (primaryMonitorID )
0 commit comments