Ich erlebe Abstürze von Kunden mit folgenden Backtrace:Der richtige Art und Weise GPU Zugang mit Core Image zu verhindern, wenn App im Hintergrund
0 libGPUSupportMercury.dylib 0x3542ae2e gpus_ReturnNotPermittedKillClient + 10
1 IMGSGX543RC2GLDriver 0x30bbf5e5 SubmitPacketsIfAny + 245
2 GLEngine 0x32f827db glFinish_Exec + 167
3 CoreImage 0x31fb85b7 CI::GLESContext::recursive_render(CI::Node const*, CGRect, bool) + 219
4 CoreImage 0x31fbb351 CI::GLESContext::render(CI::Node*, CGRect) + 41
5 CoreImage 0x31fc2901 CI::image_get_cgimage(CI::Context*, CI::Image*, CGRect, CGColorSpace*, CI::PixelFormat) + 1313
6 CoreImage 0x31fa8427 -[CIContext createCGImage:fromRect:format:colorSpace:] + 487
7 CoreImage 0x31fa81e9 -[CIContext createCGImage:fromRect:] + 89
8 App 0x0013c9db -[PZTiledImageLayer drawInContext:] (PZTiledImageLayer.m:129)
, die die GPU Zugriff fällig sind, wenn die Anwendung im Hintergrund ist (nicht erlaubt). diese
Der Code zu diesem Absturz führt, ist:
if([UIApplication sharedApplication].applicationState == UIApplicationStateActive)
{
cg_image = [self.imageContext createCGImage:im fromRect:rclip];
}
Dies bedeutet, dass der App ändert seinen Zustand nach meinem Check, aber bevor GPU innerhalb des Core Image-API zugreifen.
Was ist der richtige Weg, um die Situation des App-Hintergrunds bei der Verwendung dieser Core Image API zu behandeln?
Findet dies im Hauptthread oder in einem Worker-Thread statt? –
Jede bewährte Lösung dafür? –
@rsbbe, haben Sie etwas gefunden? –