临时解决笔记本外接显示器不能保存主屏的问题
Tofloor
poster avatar
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 Favorite View the author
All Replies
avatar
dao-root
deepin
2019-01-06 06:53
#1
感谢分享。先收藏备用
Reply View the author
avatar
fengjl
deepin
2019-01-06 19:52
#2
其实这里也可以判断 dpy.Primary,然后做处理,这样更合理
Reply View the author