Отправка 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 ...
}
Другие вопросы по тегам