linux 默认是某个虚拟控制台占用framebuffer,会不定时刷屏操作,必须让他处于显卡独占模式。才不会乱切换。
不会显示时,突然某块变成蓝色背景色。
给出示例代码
const char *const devs[] = {"/dev/tty0", "/dev/tty", "/dev/console", 0};
if (ttyDevice.isEmpty()) {
for (const char * const *dev = devs; *dev; ++dev) {
ttyfd = QT_OPEN(*dev, O_RDWR);
if (ttyfd != -1)
break;
}
} else {
ttyfd = QT_OPEN(ttyDevice.toAscii().constData(), O_RDWR);
}
if (ttyfd == -1)
return;
if (doGraphicsMode) {
ioctl(ttyfd, KDGETMODE, &oldKdMode);
if (oldKdMode != KD_GRAPHICS) {
int ret = ioctl(ttyfd, KDSETMODE, KD_GRAPHICS);
if (ret == -1)
doGraphicsMode = false;
}
}
这篇博客探讨了在Linux系统中如何通过控制tty设备来确保framebuffer不被其他虚拟控制台干扰,保持显卡独占模式。通过示例代码展示了如何打开设备文件并使用ioctl调用来切换到图形模式,避免屏幕内容意外切换,解决蓝色背景问题。
7201

被折叠的 条评论
为什么被折叠?



