CEF 窗口最小化后黑屏

本文探讨了解决基于CEF的浏览器外壳程序在最小化后页面信息丢失的问题。通过禁用GPU加速和调整相关参数,如enable-begin-frame-scheduling和disable-gpu-vsync,成功避免了页面信息丢失,并解决了最小化后的黑屏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于前面的教程,应该可以完整搭建自定义的基于CEF的浏览器外壳程序。突然明白了破解为什么形象的称为脱壳了。哈哈。

维护自定义的浏览器不是那么容易,有很多细节需要处理,也会遇到各种各样的问题。今天讲一个我遇到的问题 :浏览器最大化加载H5,然后最小化,过一段时间再最大化,之前的页面信息丢失。不是每次都能重现。

网上搜了很久,没有相关的描述。后来在一个技术交流群里,有个人建议关闭GPU加速。我操作了一下,貌似有效果,感觉最重要的是“开启第一帧”,不过还需要进一步测试,修改内容如下:

        /**
	* 2020.7.14 尝试禁用GPU加速,解决最小化黑屏问题
	*/
	command_line->AppendSwitchWithValue("disable-gpu", "1");
	command_line->AppendSwitchWithValue("disable-gpu-compositing", "1");
	command_line->AppendSwitchWithValue("enable-begin-frame-scheduling", "1");
	command_line->AppendSwitchWithValue("disable-gpu-vsync", "1");
	command_line->AppendSwitchWithValue("disable-gpu", "1");
	command_line->AppendSwitchWithValue("disable-direct-write", "1");

经过简单测试,没有发现上述问题。但是引出下一个问题,应用程序最小化后,内存会飙升,很夸张,光一个应用内存会用到9G多。

大概看了一下修改的参数,相关的只有准备第一帧相关。后来经过多次尝试发现是【disable-gpu-vsync】这个导致的。我也不太明白这个参数的含义,找到一个连接http://yiiyee.cn/blog/2015/02/06/vsync/介绍很详细。最关键的信息是

然后修改参数,内存就下来了。具体原因不详。

经过进一步测试 ,可能和GPU硬件加速没有关系,最重要的两个参数是:

command_line->AppendSwitchWithValue("enable-begin-frame-scheduling", "1");
        command_line->AppendSwitchWithValue("disable-gpu-vsync", "0");

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老朱自强不息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值