android 字体花屏,Android bug——Launcher 0x506导致花屏问题

现象描述:

在Android4.4中,概率极高会出现Launcher或者应用整个绘制成花屏、黑屏或者字体绘制成方块等问题,出现花屏问题的时候将会在hwui中打印0x506的错误。

分析:

通过log发现也只有hwui中出现0x506这个错误码,即hwui中当前绘图时使用的fbo是无效的。接着通过分析代码发现当前hwui中使用fbo的地方为LayerRenderer中,在LayerRenderer中使用到fbo的地方也就是当view中需要创建HardwareLayer的时候,将会调用LayerRenderer将view绘制的信息通过fbo保存在纹理中:

status_tLayerRenderer::prepareDirty(float left, float top, float right, float bottom,

bool opaque) {

glBindFramebuffer(GL_FRAMEBUFFER,mLayer->getFbo());

…………

returnOpenGLRenderer::prepareDirty(dirty.left, dirty.top, dirty.right, dirty.bottom,opaque);

}

Layer*LayerRenderer::createLayer(uint32_t width, uint32_t height, bool isOpaque) {

Caches& caches = Caches::getInstance();

GLuint fbo = caches.fboCache.get();

…………

caches.activeTexture(0);

Layer* layer = caches.layerCache.get(width,height);

…………

layer->setFbo(fbo);

…………

GLuint previousFbo;

glGetIntegerv(GL_FRAMEBUFFER_BINDING,(GLint*) &previousFbo);

glBindFramebuffer(GL_FRAMEBUFFER,layer->getFbo());

layer->bindTexture();

…………

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值