Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
临时解决笔记本外接显示器不能保存主屏的问题
Experiences and Insight
355
views ·
2
replies ·
To
floor
Go
fengjl
deepin
2019-01-06 05:58
Author
I7 8750
gtx 1060
hdmi外接显示
我的笔记本外接显示器,不过发现默认主屏是外接显示器,使用了自定义的配置,但是也不能在启动的时候加载,分析原因,可能是因为
1 驱动程序初始化的时候先初始化了外接显示器,后初始化内置显示器
2 代码中没有启动装载配置 ,或者装载配置后又被驱动初始化了
就下了代码,强制改了一下(加粗的部分),这个修改的比较暴力,有同学有更好的方式通知一下:
下载 startdde 的代码, 修改display/manage.go
func (dpy *Manager) doSwitchToExtend() error {
connected := dpy.Monitors.listConnected()
if len(connected) == 0 {
return nil
}
var (
startx int16 = 0
cmd = "xrandr "
)
primary := connected[len(connected)-1].Name
for _, m := range connected {
m.cfg.Enabled = true
m.doEnable(true)
m.cfg.X = startx
m.cfg.Y = 0
m.doSetPosition(startx, 0)
m.cfg.Rotation = 1
m.doSetRotation(1)
m.cfg.Reflect = 0
m.doSetReflect(0)
m.cfg.Width = m.BestMode.Width
m.cfg.Height = m.BestMode.Height
m.cfg.RefreshRate = m.BestMode.Rate
m.doSetMode(m.BestMode.Id)
cmd += m.generateCommandline(primary, false)
startx += int16(m.Width)
}
err := doAction(cmd)
if err != nil {
logger.Errorf("[switchToExtend] apply (%s) failed: %v", cmd, err)
return err
}
return dpy.doSetPrimary(primary, true, true)
}
Reply
Like 0
Favorite
View the author
All Replies
dao-root
deepin
2019-01-06 06:53
#1
感谢分享。先收藏备用
Reply
Like 0
View the author
fengjl
deepin
2019-01-06 19:52
#2
其实这里也可以判断 dpy.Primary,然后做处理,这样更合理
Reply
Like 0
View the author
Please
sign
in first
Featured Collection
Change
[Tutorial] deepin25 WSL Offline Installation Guide
UOS AI 2.8 Released! Three New Intelligent Agents & Major Evolution
Solid Q&A | deepin 25 Common Questions – The Immutable System Edition
New Thread
Popular Events
More
gtx 1060
hdmi外接显示
我的笔记本外接显示器,不过发现默认主屏是外接显示器,使用了自定义的配置,但是也不能在启动的时候加载,分析原因,可能是因为
1 驱动程序初始化的时候先初始化了外接显示器,后初始化内置显示器
2 代码中没有启动装载配置 ,或者装载配置后又被驱动初始化了
就下了代码,强制改了一下(加粗的部分),这个修改的比较暴力,有同学有更好的方式通知一下:
下载 startdde 的代码, 修改display/manage.go
func (dpy *Manager) doSwitchToExtend() error {
connected := dpy.Monitors.listConnected()
if len(connected) == 0 {
return nil
}
var (
startx int16 = 0
cmd = "xrandr "
)
primary := connected[len(connected)-1].Name
for _, m := range connected {
m.cfg.Enabled = true
m.doEnable(true)
m.cfg.X = startx
m.cfg.Y = 0
m.doSetPosition(startx, 0)
m.cfg.Rotation = 1
m.doSetRotation(1)
m.cfg.Reflect = 0
m.doSetReflect(0)
m.cfg.Width = m.BestMode.Width
m.cfg.Height = m.BestMode.Height
m.cfg.RefreshRate = m.BestMode.Rate
m.doSetMode(m.BestMode.Id)
cmd += m.generateCommandline(primary, false)
startx += int16(m.Width)
}
err := doAction(cmd)
if err != nil {
logger.Errorf("[switchToExtend] apply (%s) failed: %v", cmd, err)
return err
}
return dpy.doSetPrimary(primary, true, true)
}