Отправка 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
, Почему и каково решение? Спасибо!
1 ответ
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 ...
}