Brendan Shanks (@bshanks) commented about dlls/winemac.drv/surface.c:
CGImageAlphaInfo alpha_info = (window_surface->alpha_mask ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst); CGColorSpaceRef colorspace; CGImageRef image;
- IOSurfaceRef io_surface = surface->back_buffer;
- colorspace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB);
- image = CGImageCreate(color_info->bmiHeader.biWidth, abs(color_info->bmiHeader.biHeight), 8, 32,
color_info->bmiHeader.biSizeImage / abs(color_info->bmiHeader.biHeight), colorspace,
alpha_info | kCGBitmapByteOrder32Little, surface->provider, NULL, retina_on, kCGRenderingIntentDefault);
- CGColorSpaceRelease(colorspace);
- surface->back_buffer = surface->front_buffer;
- surface->front_buffer = io_surface;
- macdrv_window_set_color_image(surface->window, image, cgrect_from_rect(*rect), cgrect_from_rect(*dirty));
- CGImageRelease(image);
- {
Some comments describing what each of these operations does would be useful.