3.7 低端机 纹理资源打包后混乱

在红米2A 上面运行时,出现纹理混乱。使用3.4的资源后没有问题。而且在红米2A上,及其容易崩溃,3.4版本能正常运行,就是很卡顿。

:rofl:有概率出现,全屏资源混乱,透明度全部错误了。

case APP_CMD_WINDOW_RESIZED: {
CC_LOG_INFO(“AndroidPlatform: APP_CMD_WINDOW_RESIZED”);
cc::WindowEvent ev;
ev.type = cc::WindowEvent::Type::SIZE_CHANGED;
ev.width = ANativeWindow_getWidth(_androidPlatform->_app->window);
ev.height = ANativeWindow_getHeight(_androidPlatform->_app->window);
events::WindowEvent::broadcast(ev);
break;
}

在红米上切换会调用这个接口,这里是不是忘记传窗口ID了

会导致崩溃。

进入闪退日志
W/Adreno-GSL: <ioctl_kgsl_sharedmem_free:1697>: kgsl_sharedmem_free: munmap failed: errno 22 Invalid argument

W/Adreno-GSL: <gsl_ldd_control:427>: ioctl fd 35 code 0x40040921 (IOCTL_KGSL_SHAREDMEM_FREE) failed: errno 22 Invalid argument
W/Adreno-GSL: <gsl_ldd_control:427>: ioctl fd 35 code 0x40040921 (IOCTL_KGSL_SHAREDMEM_FREE) failed: errno 22 Invalid argument

A/libc: invalid address or address of corrupt block 0xb966caa0 passed to dlfree
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xdeadbaad in tid 15779 (Thread-8381)
A/libc: Unable to open connection to debuggerd: Permission denied

/Adreno-GSL: <ioctl_kgsl_cmdstream_freememontimestamp:1295>: ioctl_kgsl_cmdstream_freememontimestamp:invalid ptr gpuaddr

在android端,针对多窗口,是有两套消息发送的地方
1、非主窗口是在这里发送消息,是带窗口ID


2、主窗口发送消息是在这里,默认如果没传窗口ID,是默认为主窗口

从堆栈上看,好像没有看到跟窗口ID相关的内容

您这的奔溃是因为开启多窗口导致的么?

只有在红米上面才走的下面的截图流程,默认的是0,实际存储的窗口只有1个,句柄ID为1。

没有开启多个窗口

这个我在传入windowsid后就修复了。现在的主要问题是随机的崩溃。特别是进入游戏的时候。

默认是0,但是在ts层收到消息之后,会做一个判断,如果是未定义,会赋值为1。
类似如下代码:

这里是有个bug,应该是用0来判断,而不是用undefined

是说windowId修复之后,还是会奔溃?奔溃堆栈还是一样么?

windowId 修复后,切后台回来必然崩溃的问题没有了。但红米2运行稳定性很差。经常各种崩溃。

有奔溃堆栈么?

方便提供必现的demo么?

不方便提供,你们有红米2的手机嘛,稍微跑点复杂点的应用,应该就可以复现。

就上面粘的一些,堆栈定位不到详细信息。

您好,我们在红米4A运行纹理渲染的测试用例不会出现显示异常和崩溃;但是前后台切换会闪退;

您方便把你的demo精简之后,发给我们测试下么? 或者您用我们官网的demo试试?

好的。我搞个小点的。