2015-11-03 3 views
0

Мне нужно получить захват движущегося окна. Поскольку окно движется, я хочу, чтобы захватить его в основном потоке:отправка CGImageRef в качестве выходного параметра

void MacRenderer::captureImageImpl(const CGRect& captureRect, const CGWindowID windowId, CGImageRef* img) 
{ 
    *img = CGWindowListCreateImage(captureRect, kCGWindowListOptionIncludingWindow, windowId, kCGWindowImageBoundsIgnoreFraming); //EXC_BAD_ACCESS 
} 

void MacRenderer::captureWindow(CGWindowID windowId, unsigned char** bgraData, int* width, int* height, int* bytesPerRow, NSRect captureRect) 
{ 
    CGImageRef* windowImage; 

    dispatch_sync(dispatch_get_main_queue(), ^{ 
     captureImageImpl(captureCGRect, windowId, windowImage); 
    }); 

    //Use windowImage ... 
} 

Я получаю EXC_BAD_ACCESS на адрес img. Почему и каково решение? Благодаря!

ответ

0
void MacRenderer::captureWindow(CGWindowID windowId, unsigned char** bgraData, int* width, int* height, int* bytesPerRow, NSRect captureRect) 
{ 
    __block CGImageRef windowImage; 

    dispatch_sync(dispatch_get_main_queue(), ^{ 
     captureImageImpl(captureCGRect, windowId, &windowImage); 
    }); 

    //Use windowImage ... 
} 
Смежные вопросы