Я хочу сделать снимок экрана из фоновой службы. Он отлично работает под ios6 и ios7, но падает под сеткой ios7.IOMobileFramebufferGetLayerDefaultSurface не работает на сетке ios7
это мой код
{
IOMobileFramebufferConnection connect;
kern_return_t result;
m_screenSurfaceRef = NULL;
io_service_t framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleH1CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleM2CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleCLCD"));
#pragma unused(result)
result = IOMobileFramebufferOpen(framebufferService, mach_task_self(), 0, &connect);
result = IOMobileFramebufferGetLayerDefaultSurface(connect, 0, &m_screenSurfaceRef);
}
при запуске на сетчатке IOMobileFramebufferGetLayerDefaultSurface (подключения, 0, & m_screenSurfaceRef) разбился.
аварии Информация:
нить # 1: TID = 0x1dfe9, 0x000000018ea2c270 IOMobileFramebuffer
IOMobileFramebufferGetLayerDefaultSurface + 4, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x5e06dc28) frame #0: 0x000000018ea2c270 IOMobileFramebuffer
IOMobileFramebufferGetLayerDefaultSurface + 4
Кажется, разбился на 64bit + сетчатка, а не только сетчатка. Вы видите то же самое? – nevyn
@nevyn спасибо, я строю 32-битное приложение, и он работает хорошо. – joeykika
Это несчастливое, но, возможно, приемлемое обходное решение. Однако ответ, который я дал ниже, намного лучше. Хочешь принять его, пожалуйста? – nevyn