关于使用freetype显示文字速度极其慢的问题

最近的项目遇到一个问题,在ARM上显示一串文字有时候需要半秒以上才能显示出来,这速度显然不对劲,最后一步步跟踪代码才发现是freetype的bug造成的。

使用的freetype版本:freetype-2.12.1.tar.gz

下载地址:https://udomain.dl.sourceforge.net/project/freetype/freetype2/2.12.1/freetype-2.12.1.tar.gz

代码跟踪到ftccache.c的ftc_cache_add函数,发现manager->cur_weight并没有被初始化,此变量用于记录当前的cache空间已使用了多少。如果已使用的空间大于等于设定的最大值,那就对cache数据进行压缩。搜索了整个freetype项目的代码发现cur_weight确实由始至终并没有被初始化,所以它是个不确定的值,这造成cur_weight的值有可能大于max_weight,于是每渲染一个文字都会触发一次数据压缩算法,这会导致消耗大量的CPU时间,最终造成在界面上显示字符串非常慢!

解决办法:

在ftcmanag.c的FTC_Manager_New函数manager->max_weight   = max_bytes;下面添加一句manager->cur_weight   = 0;就可以。

另外,在解决了这个bug之后,才发现github上的2.12.1版本已经修复了这个bug。sourceforge.net上的2.12.1版本压缩包是5月份的,github上的是8月份修复这个bug的。早知道直接在github上下载就好了,白忙了大半天!!

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值