Skip to content

Commit 4726010

Browse files
lichangzeKT-lcz
authored andcommitted
feat: 新增dconfig配置,用于厂商定制内容合并主线
新增dconfig配置,用于厂商定制内容合并主线 Log: 新增dconfig配置,用于厂商定制内容合并主线 Task: https://pms.uniontech.com/task-view-220857.html Influence: 厂商适配 Change-Id: Ief73adcecf97643d8137bce6e758d6740581ef09
1 parent 89d2186 commit 4726010

7 files changed

Lines changed: 151 additions & 21 deletions

File tree

archlinux/PKGBUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ prepare() {
3333
go get -v gopkg.in/yaml.v3
3434
go get -v github.com/davecgh/go-spew/spew
3535
go get -v github.com/stretchr/testify
36+
go get -v github.com/jouyouyun/hardware
3637
sed -i 's/sbin/bin/' Makefile
3738
}
3839

debian/control

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Build-Depends:
1414
golang-go,
1515
golang-golang-x-xerrors-dev,
1616
golang-gopkg-check.v1-dev,
17+
golang-github-jouyouyun-hardware-dev,
1718
jq,
1819
libsecret-1-dev,
1920
libxcursor-dev,

display/brightness.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"path/filepath"
1313
"strings"
1414

15+
"github.com/linuxdeepin/go-lib/strv"
1516
"github.com/linuxdeepin/startdde/display/brightness"
1617
)
1718

@@ -158,8 +159,10 @@ func (m *Manager) isBuiltinMonitor(name string) bool {
158159
case strings.HasPrefix(name, "vga"):
159160
return false
160161
case strings.HasPrefix(name, "hdmi"):
162+
if strv.Strv(m.dsHDMIIsBuiltinConfig).Contains(m.dmiInfo.ProductName) {
163+
return true
164+
}
161165
return false
162-
163166
case strings.HasPrefix(name, "dvi"):
164167
return true
165168
case strings.HasPrefix(name, "lvds"):

display/brightness/brightness.go

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -123,19 +123,6 @@ func Set(brightness float64, temperature int, setter string, isBuiltin bool, out
123123
// return 1, nil
124124
//}
125125

126-
func GetMaxBacklightBrightness() int {
127-
if len(controllers) == 0 {
128-
return 0
129-
}
130-
maxBrightness := controllers[0].MaxBrightness
131-
for _, controller := range controllers {
132-
if maxBrightness > controller.MaxBrightness {
133-
maxBrightness = controller.MaxBrightness
134-
}
135-
}
136-
return maxBrightness
137-
}
138-
139126
func GetBacklightController(outputId uint32, conn *x.Conn) (*displayBl.Controller, error) {
140127
// TODO
141128
//output := randr.Output(outputId)
@@ -147,7 +134,7 @@ func supportBacklight() bool {
147134
if helper == nil {
148135
return false
149136
}
150-
return len(controllers) > 0
137+
return len(Controllers) > 0
151138
}
152139

153140
func setOutputCrtcGamma(setting gammaSetting, output randr.Output, conn *x.Conn) error {
@@ -210,18 +197,18 @@ func genGammaRamp(size uint16, brightness float64) (red, green, blue []uint16) {
210197
return
211198
}
212199

213-
var controllers displayBl.Controllers
200+
var Controllers displayBl.Controllers
214201

215202
func init() {
216203
var err error
217-
controllers, err = displayBl.List()
204+
Controllers, err = displayBl.List()
218205
if err != nil {
219206
fmt.Println("failed to list backlight controller:", err)
220207
}
221208
}
222209

223210
func setBacklight(value float64, output randr.Output, conn *x.Conn) error {
224-
for _, controller := range controllers {
211+
for _, controller := range Controllers {
225212
err := _setBacklight(value, controller)
226213
if err != nil {
227214
fmt.Printf("WARN: failed to set backlight %s: %v", controller.Name, err)

display/display.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ func StartPart2() error {
117117
m := _dpy
118118
m.initSysDisplay()
119119
m.initTouchscreens()
120-
121120
if !_greeterMode {
122121
controlRedshift("disable")
123122
m.applyColorTempConfig(m.DisplayMode)

display/manager.go

Lines changed: 113 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,19 @@ import (
2323

2424
"github.com/davecgh/go-spew/spew"
2525
"github.com/godbus/dbus"
26+
"github.com/jouyouyun/hardware/graphic"
2627
sessiondisplay "github.com/linuxdeepin/go-dbus-factory/com.deepin.daemon.display"
2728
sysdisplay "github.com/linuxdeepin/go-dbus-factory/com.deepin.system.display"
2829
inputdevices "github.com/linuxdeepin/go-dbus-factory/com.deepin.system.inputdevices"
30+
systeminfo "github.com/linuxdeepin/go-dbus-factory/com.deepin.system.systeminfo"
31+
configManager "github.com/linuxdeepin/go-dbus-factory/org.desktopspec.ConfigManager"
2932
ofdbus "github.com/linuxdeepin/go-dbus-factory/org.freedesktop.dbus"
3033
login1 "github.com/linuxdeepin/go-dbus-factory/org.freedesktop.login1"
3134
gio "github.com/linuxdeepin/go-gir/gio-2.0"
3235
"github.com/linuxdeepin/go-lib/dbusutil"
3336
"github.com/linuxdeepin/go-lib/gsettings"
3437
"github.com/linuxdeepin/go-lib/log"
38+
"github.com/linuxdeepin/go-lib/strv"
3539
"github.com/linuxdeepin/go-lib/xdg/basedir"
3640
x "github.com/linuxdeepin/go-x11-client"
3741
"github.com/linuxdeepin/go-x11-client/ext/randr"
@@ -99,6 +103,13 @@ const (
99103
priorityOther
100104
)
101105

106+
const (
107+
DSettingsAppID = "org.deepin.startdde"
108+
DSettingsDisplayName = "org.deepin.Display"
109+
DSettingsKeyHDMIIsBuiltinConfig = "HDMI-is-builtin"
110+
DSettingsKeyBackLightMaxBrightnessChooseBigConfig = "backLight-max-brightness-choose-big"
111+
)
112+
102113
var (
103114
_monitorTypePriority = map[string]int{
104115
"edp": priorityEDP,
@@ -219,6 +230,11 @@ type Manager struct {
219230
unsupportGammaDrmList []string
220231
drmSupportGamma bool
221232
initPrimary bool
233+
234+
dsHDMIIsBuiltinConfig []string
235+
dsBackLightMaxBrightnessChooseBigConfig []string
236+
dmiInfo systeminfo.DMIInfo
237+
pciVendor []string
222238
}
223239

224240
type monitorSizeInfo struct {
@@ -285,7 +301,7 @@ func newManager(service *dbusutil.Service) *Manager {
285301

286302
m.mm.setHooks(m)
287303

288-
m.setPropMaxBacklightBrightness(uint32(brightness.GetMaxBacklightBrightness()))
304+
m.setPropMaxBacklightBrightness(uint32(m.GetMaxBacklightBrightness()))
289305

290306
sysSigLoop := dbusutil.NewSignalLoop(m.sysBus, 10)
291307
m.sysSigLoop = sysSigLoop
@@ -1001,7 +1017,8 @@ func (m *Manager) init() {
10011017
// 没有内建屏,不监听内核信号
10021018
logger.Info("built-in screen does not exist")
10031019
}
1004-
1020+
m.initDSettings(m.sysBus)
1021+
m.initHardwareInfo(m.sysBus)
10051022
go func() {
10061023
// 每次设置过主屏和其rect区域后,都将此值同步到xsettings
10071024
bus, _ := dbus.SessionBus()
@@ -2941,3 +2958,97 @@ func (m *Manager) detectDrmSupportGamma() (bool, error) {
29412958
}
29422959
return vgaSupportGamma, nil
29432960
}
2961+
2962+
func (m *Manager) initDSettings(sysBus *dbus.Conn) {
2963+
ds := configManager.NewConfigManager(sysBus)
2964+
2965+
displayPath, err := ds.AcquireManager(0, DSettingsAppID, DSettingsDisplayName, "")
2966+
if err != nil {
2967+
logger.Warning(err)
2968+
return
2969+
}
2970+
2971+
dsDisplay, err := configManager.NewManager(sysBus, displayPath)
2972+
if err != nil {
2973+
logger.Warning(err)
2974+
return
2975+
}
2976+
2977+
getHDMIIsBuiltinConfig := func() {
2978+
v, err := dsDisplay.Value(0, DSettingsKeyHDMIIsBuiltinConfig)
2979+
if err != nil {
2980+
logger.Warning(err)
2981+
return
2982+
}
2983+
itemList := v.Value().([]dbus.Variant)
2984+
for _, i := range itemList {
2985+
m.dsHDMIIsBuiltinConfig = append(m.dsHDMIIsBuiltinConfig, i.Value().(string))
2986+
}
2987+
}
2988+
getBackLightMaxBrightnessChooseBigConfig := func() {
2989+
v, err := dsDisplay.Value(0, DSettingsKeyBackLightMaxBrightnessChooseBigConfig)
2990+
if err != nil {
2991+
logger.Warning(err)
2992+
return
2993+
}
2994+
itemList := v.Value().([]dbus.Variant)
2995+
for _, i := range itemList {
2996+
m.dsBackLightMaxBrightnessChooseBigConfig = append(m.dsBackLightMaxBrightnessChooseBigConfig, i.Value().(string))
2997+
}
2998+
}
2999+
getHDMIIsBuiltinConfig()
3000+
getBackLightMaxBrightnessChooseBigConfig()
3001+
3002+
dsDisplay.InitSignalExt(m.sysSigLoop, true)
3003+
_, err = dsDisplay.ConnectValueChanged(func(key string) {
3004+
switch key {
3005+
case DSettingsKeyHDMIIsBuiltinConfig:
3006+
getHDMIIsBuiltinConfig()
3007+
case DSettingsKeyBackLightMaxBrightnessChooseBigConfig:
3008+
getBackLightMaxBrightnessChooseBigConfig()
3009+
}
3010+
})
3011+
if err != nil {
3012+
logger.Warning(err)
3013+
}
3014+
}
3015+
3016+
func (m *Manager) initHardwareInfo(sysBus *dbus.Conn) {
3017+
info := systeminfo.NewSystemInfo(sysBus)
3018+
dmi, err := info.DMIInfo().Get(0)
3019+
if err != nil {
3020+
logger.Warning(err)
3021+
return
3022+
}
3023+
m.dmiInfo = dmi
3024+
graphicList, err := graphic.GetGraphicList()
3025+
if err != nil {
3026+
logger.Warning(err)
3027+
return
3028+
}
3029+
for _, graphicInfo := range graphicList {
3030+
m.pciVendor = append(m.pciVendor, graphicInfo.Vendor)
3031+
}
3032+
}
3033+
3034+
func (m *Manager) GetMaxBacklightBrightness() int {
3035+
controllers := brightness.Controllers
3036+
if len(controllers) == 0 {
3037+
return 0
3038+
}
3039+
maxBrightness := controllers[0].MaxBrightness
3040+
if strv.Strv(m.dsBackLightMaxBrightnessChooseBigConfig).Contains(m.dmiInfo.ProductName) {
3041+
for _, controller := range controllers {
3042+
if maxBrightness < controller.MaxBrightness {
3043+
maxBrightness = controller.MaxBrightness
3044+
}
3045+
}
3046+
} else {
3047+
for _, controller := range controllers {
3048+
if maxBrightness > controller.MaxBrightness {
3049+
maxBrightness = controller.MaxBrightness
3050+
}
3051+
}
3052+
}
3053+
return maxBrightness
3054+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"magic": "dsg.config.meta",
3+
"version": "1.0",
4+
"contents": {
5+
"HDMI-is-builtin": {
6+
"value": ["PN100F3"],
7+
"serial": 0,
8+
"flags": [
9+
"global"
10+
],
11+
"name": "HDMI screen is builtin screen",
12+
"description": "",
13+
"permissions": "readwrite",
14+
"visibility": "private"
15+
},
16+
"backLight-max-brightness-choose-big": {
17+
"value": ["PN100F3"],
18+
"serial": 0,
19+
"flags": [
20+
"global"
21+
],
22+
"name": "backLight max brightness choose big",
23+
"description": "",
24+
"permissions": "readwrite",
25+
"visibility": "private"
26+
}
27+
}
28+
}

0 commit comments

Comments
 (0)