Mystérieux crash d'application avec OpenGL

J'utilise une bibliothèque GPUIImage pour développer une application de camera iOS. Parfois, lorsque l'application est suspendue après 2-3 minutes, le Xcode me donne un accident sur l'application, pointant vers les lignes de la méthode:

 - (void)presentBufferForDisplay; { [self.context presentRenderbuffer:GL_RENDERBUFFER]; } 

Quelle pourrait être la raison de ce crash? J'ai une camera très longue et le code est dans la class GPUImageContext . Qu'est-ce que je peux faire mal ici?

Vous ne pouvez pas accéder à OpenGL ES lorsque votre application est en cours d'exécution en arrière-plan (suspendue). GPUImage utilise OpenGL ES pour tout ce qu'il fait. Vous devez vous assurer que tout le travail effectué par votre application avec GPUImage (filtrage de la video, traitement d'une image) est effectué avant que votre application ne termine sa transition vers l'arrière-plan.

Vous devez écouter la UIApplicationWillResignActiveNotification ou remplir les callbacks de délégué associés pour la transition vers l'arrière-plan, et y mettre en pause toute capture de camera (via la méthode -pauseCameraCapture sur votre input de camera) ou attendre la fin du traitement (je crois l'envoi synchrone dans la queue d'expédition série GPUImage s'en chargera).

La discussion connexe pour ceci peut être trouvée sur la page de problèmes de GitHub ici: https://github.com/BradLarson/GPUImage/issues/197 et dans plusieurs issues relatives.