我们的应用程序使用 glreadpixels 在每一帧上捕获屏幕。在 iOS 5 设备上,当您收到短信(或任何其他通知,我假设)时,应用程序在glreadpixels
通话时崩溃。
崩溃只发生在 iOS 5 上,带有新样式的通知(从顶部向下滑动并在不久之后消失的通知)。在 iOS 4 上,旧式UIAlertView
通知可以正常工作。
具体来说,调用会glReadPixels()
引发EXEC_BAD_ACCESS
错误。
具体调用是
glReadPixels(0,0,tx,ty,GL_BGRA_EXT,GL_UNSIGNED_BYTE, buffer);
在哪里
int tx = 482
int ty = 320
(应用程序仅处于横向模式)
和
GLubyte *buffer = malloc(sizeof(GLubyte)* 4 * tx * ty );
我们还尝试在发出读取命令之前检查帧缓冲区的状态,glCheckFramebufferStatus(GL_FRAMEBUFFER)
总是返回GL_FRAMEBUFFER_COMPLETE
。
这是如何实现新通知弹出的错误吗?我们如何解决它?如果我们能够检测到通知即将出现,并暂停调用glreadpixels
直到它消失,那也是可以接受的。
谢谢,
蒂姆