283 lines
6.9 KiB
Diff
283 lines
6.9 KiB
Diff
|
|
diff -Nuar startdde-5.9.61/display/display.go startdde-5.9.61.new/display/display.go
|
|||
|
|
--- startdde-5.9.61/display/display.go 2022-12-09 11:19:18.000000000 +0800
|
|||
|
|
+++ startdde-5.9.61.new/display/display.go 2023-04-13 09:51:43.128038184 +0800
|
|||
|
|
@@ -119,7 +119,7 @@
|
|||
|
|
m.initTouchscreens()
|
|||
|
|
|
|||
|
|
if !_greeterMode {
|
|||
|
|
- controlRedshift("disable")
|
|||
|
|
+ //controlRedshift("disable")
|
|||
|
|
m.applyColorTempConfig(m.DisplayMode)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
diff -Nuar startdde-5.9.61/.history/display/display_20221209111917.go startdde-5.9.61.new/.history/display/display_20221209111917.go
|
|||
|
|
--- startdde-5.9.61/.history/display/display_20221209111917.go 1970-01-01 08:00:00.000000000 +0800
|
|||
|
|
+++ startdde-5.9.61.new/.history/display/display_20221209111917.go 2023-04-13 09:51:43.124036951 +0800
|
|||
|
|
@@ -0,0 +1,131 @@
|
|||
|
|
+// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
|
|||
|
|
+//
|
|||
|
|
+// SPDX-License-Identifier: GPL-3.0-or-later
|
|||
|
|
+
|
|||
|
|
+package display
|
|||
|
|
+
|
|||
|
|
+import (
|
|||
|
|
+ "errors"
|
|||
|
|
+ "reflect"
|
|||
|
|
+
|
|||
|
|
+ "github.com/godbus/dbus"
|
|||
|
|
+ sysdisplay "github.com/linuxdeepin/go-dbus-factory/com.deepin.system.display"
|
|||
|
|
+ "github.com/linuxdeepin/go-lib/dbusutil"
|
|||
|
|
+ "github.com/linuxdeepin/go-lib/log"
|
|||
|
|
+)
|
|||
|
|
+
|
|||
|
|
+var logger = log.NewLogger("daemon/display")
|
|||
|
|
+
|
|||
|
|
+const (
|
|||
|
|
+ dbusServiceName = "com.deepin.daemon.Display"
|
|||
|
|
+ dbusInterface = "com.deepin.daemon.Display"
|
|||
|
|
+ dbusPath = "/com/deepin/daemon/Display"
|
|||
|
|
+)
|
|||
|
|
+
|
|||
|
|
+var _dpy *Manager
|
|||
|
|
+
|
|||
|
|
+var _greeterMode bool
|
|||
|
|
+
|
|||
|
|
+func SetGreeterMode(val bool) {
|
|||
|
|
+ _greeterMode = val
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+type scaleFactorsHelper struct {
|
|||
|
|
+ changedCb func(factors map[string]float64) error
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+// ScaleFactorsHelper 全局的 scale factors 相关 helper,要传给 xsettings 模块。
|
|||
|
|
+var ScaleFactorsHelper scaleFactorsHelper
|
|||
|
|
+
|
|||
|
|
+// 用于在 display.Start 还没被调用时,先由 xsettings.Start 调用了 ScaleFactorsHelper.SetScaleFactors, 缓存数据。
|
|||
|
|
+var _scaleFactors map[string]float64
|
|||
|
|
+
|
|||
|
|
+func (h *scaleFactorsHelper) SetScaleFactors(factors map[string]float64) error {
|
|||
|
|
+ if _dpy == nil {
|
|||
|
|
+ _scaleFactors = factors
|
|||
|
|
+ return nil
|
|||
|
|
+ }
|
|||
|
|
+ return _dpy.setScaleFactors(factors)
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func (h *scaleFactorsHelper) GetScaleFactors() (map[string]float64, error) {
|
|||
|
|
+ sysBus, err := dbus.SystemBus()
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return nil, err
|
|||
|
|
+ }
|
|||
|
|
+ sysDisplay := sysdisplay.NewDisplay(sysBus)
|
|||
|
|
+ cfgJson, err := sysDisplay.GetConfig(0)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return nil, err
|
|||
|
|
+ }
|
|||
|
|
+ var rootCfg struct {
|
|||
|
|
+ Config struct {
|
|||
|
|
+ ScaleFactors map[string]float64
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ err = jsonUnmarshal(cfgJson, &rootCfg)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return nil, err
|
|||
|
|
+ }
|
|||
|
|
+ return rootCfg.Config.ScaleFactors, nil
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func (h *scaleFactorsHelper) SetChangedCb(fn func(factors map[string]float64) error) {
|
|||
|
|
+ h.changedCb = fn
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func (m *Manager) setScaleFactors(factors map[string]float64) error {
|
|||
|
|
+ logger.Debug("setScaleFactors", factors)
|
|||
|
|
+ m.sysConfig.mu.Lock()
|
|||
|
|
+ defer m.sysConfig.mu.Unlock()
|
|||
|
|
+
|
|||
|
|
+ if reflect.DeepEqual(m.sysConfig.Config.ScaleFactors, factors) {
|
|||
|
|
+ return nil
|
|||
|
|
+ }
|
|||
|
|
+ m.sysConfig.Config.ScaleFactors = factors
|
|||
|
|
+ err := m.saveSysConfigNoLock("scale factors changed")
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ logger.Warning(err)
|
|||
|
|
+ }
|
|||
|
|
+ return err
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func Start(service *dbusutil.Service) error {
|
|||
|
|
+ m := newManager(service)
|
|||
|
|
+ m.init()
|
|||
|
|
+
|
|||
|
|
+ if !_greeterMode {
|
|||
|
|
+ // 正常 startdde
|
|||
|
|
+ err := service.Export(dbusPath, m)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return err
|
|||
|
|
+ }
|
|||
|
|
+
|
|||
|
|
+ err = service.RequestName(dbusServiceName)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return err
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ _dpy = m
|
|||
|
|
+ return nil
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func StartPart2() error {
|
|||
|
|
+ if _dpy == nil {
|
|||
|
|
+ return errors.New("_dpy is nil")
|
|||
|
|
+ }
|
|||
|
|
+ m := _dpy
|
|||
|
|
+ m.initSysDisplay()
|
|||
|
|
+ m.initTouchscreens()
|
|||
|
|
+
|
|||
|
|
+ if !_greeterMode {
|
|||
|
|
+ controlRedshift("disable")
|
|||
|
|
+ m.applyColorTempConfig(m.DisplayMode)
|
|||
|
|
+ }
|
|||
|
|
+
|
|||
|
|
+ return nil
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func SetLogLevel(level log.Priority) {
|
|||
|
|
+ logger.SetLogLevel(level)
|
|||
|
|
+}
|
|||
|
|
diff -Nuar startdde-5.9.61/.history/display/display_20230413095143.go startdde-5.9.61.new/.history/display/display_20230413095143.go
|
|||
|
|
--- startdde-5.9.61/.history/display/display_20230413095143.go 1970-01-01 08:00:00.000000000 +0800
|
|||
|
|
+++ startdde-5.9.61.new/.history/display/display_20230413095143.go 2023-04-13 09:51:43.132039419 +0800
|
|||
|
|
@@ -0,0 +1,131 @@
|
|||
|
|
+// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
|
|||
|
|
+//
|
|||
|
|
+// SPDX-License-Identifier: GPL-3.0-or-later
|
|||
|
|
+
|
|||
|
|
+package display
|
|||
|
|
+
|
|||
|
|
+import (
|
|||
|
|
+ "errors"
|
|||
|
|
+ "reflect"
|
|||
|
|
+
|
|||
|
|
+ "github.com/godbus/dbus"
|
|||
|
|
+ sysdisplay "github.com/linuxdeepin/go-dbus-factory/com.deepin.system.display"
|
|||
|
|
+ "github.com/linuxdeepin/go-lib/dbusutil"
|
|||
|
|
+ "github.com/linuxdeepin/go-lib/log"
|
|||
|
|
+)
|
|||
|
|
+
|
|||
|
|
+var logger = log.NewLogger("daemon/display")
|
|||
|
|
+
|
|||
|
|
+const (
|
|||
|
|
+ dbusServiceName = "com.deepin.daemon.Display"
|
|||
|
|
+ dbusInterface = "com.deepin.daemon.Display"
|
|||
|
|
+ dbusPath = "/com/deepin/daemon/Display"
|
|||
|
|
+)
|
|||
|
|
+
|
|||
|
|
+var _dpy *Manager
|
|||
|
|
+
|
|||
|
|
+var _greeterMode bool
|
|||
|
|
+
|
|||
|
|
+func SetGreeterMode(val bool) {
|
|||
|
|
+ _greeterMode = val
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+type scaleFactorsHelper struct {
|
|||
|
|
+ changedCb func(factors map[string]float64) error
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+// ScaleFactorsHelper 全局的 scale factors 相关 helper,要传给 xsettings 模块。
|
|||
|
|
+var ScaleFactorsHelper scaleFactorsHelper
|
|||
|
|
+
|
|||
|
|
+// 用于在 display.Start 还没被调用时,先由 xsettings.Start 调用了 ScaleFactorsHelper.SetScaleFactors, 缓存数据。
|
|||
|
|
+var _scaleFactors map[string]float64
|
|||
|
|
+
|
|||
|
|
+func (h *scaleFactorsHelper) SetScaleFactors(factors map[string]float64) error {
|
|||
|
|
+ if _dpy == nil {
|
|||
|
|
+ _scaleFactors = factors
|
|||
|
|
+ return nil
|
|||
|
|
+ }
|
|||
|
|
+ return _dpy.setScaleFactors(factors)
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func (h *scaleFactorsHelper) GetScaleFactors() (map[string]float64, error) {
|
|||
|
|
+ sysBus, err := dbus.SystemBus()
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return nil, err
|
|||
|
|
+ }
|
|||
|
|
+ sysDisplay := sysdisplay.NewDisplay(sysBus)
|
|||
|
|
+ cfgJson, err := sysDisplay.GetConfig(0)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return nil, err
|
|||
|
|
+ }
|
|||
|
|
+ var rootCfg struct {
|
|||
|
|
+ Config struct {
|
|||
|
|
+ ScaleFactors map[string]float64
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ err = jsonUnmarshal(cfgJson, &rootCfg)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return nil, err
|
|||
|
|
+ }
|
|||
|
|
+ return rootCfg.Config.ScaleFactors, nil
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func (h *scaleFactorsHelper) SetChangedCb(fn func(factors map[string]float64) error) {
|
|||
|
|
+ h.changedCb = fn
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func (m *Manager) setScaleFactors(factors map[string]float64) error {
|
|||
|
|
+ logger.Debug("setScaleFactors", factors)
|
|||
|
|
+ m.sysConfig.mu.Lock()
|
|||
|
|
+ defer m.sysConfig.mu.Unlock()
|
|||
|
|
+
|
|||
|
|
+ if reflect.DeepEqual(m.sysConfig.Config.ScaleFactors, factors) {
|
|||
|
|
+ return nil
|
|||
|
|
+ }
|
|||
|
|
+ m.sysConfig.Config.ScaleFactors = factors
|
|||
|
|
+ err := m.saveSysConfigNoLock("scale factors changed")
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ logger.Warning(err)
|
|||
|
|
+ }
|
|||
|
|
+ return err
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func Start(service *dbusutil.Service) error {
|
|||
|
|
+ m := newManager(service)
|
|||
|
|
+ m.init()
|
|||
|
|
+
|
|||
|
|
+ if !_greeterMode {
|
|||
|
|
+ // 正常 startdde
|
|||
|
|
+ err := service.Export(dbusPath, m)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return err
|
|||
|
|
+ }
|
|||
|
|
+
|
|||
|
|
+ err = service.RequestName(dbusServiceName)
|
|||
|
|
+ if err != nil {
|
|||
|
|
+ return err
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ _dpy = m
|
|||
|
|
+ return nil
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func StartPart2() error {
|
|||
|
|
+ if _dpy == nil {
|
|||
|
|
+ return errors.New("_dpy is nil")
|
|||
|
|
+ }
|
|||
|
|
+ m := _dpy
|
|||
|
|
+ m.initSysDisplay()
|
|||
|
|
+ m.initTouchscreens()
|
|||
|
|
+
|
|||
|
|
+ if !_greeterMode {
|
|||
|
|
+ //controlRedshift("disable")
|
|||
|
|
+ m.applyColorTempConfig(m.DisplayMode)
|
|||
|
|
+ }
|
|||
|
|
+
|
|||
|
|
+ return nil
|
|||
|
|
+}
|
|||
|
|
+
|
|||
|
|
+func SetLogLevel(level log.Priority) {
|
|||
|
|
+ logger.SetLogLevel(level)
|
|||
|
|
+}
|