From: Marc-Aurel Zent mzent@codeweavers.com
--- dlls/winemac.drv/cocoa_window.m | 12 ++++++------ dlls/winemac.drv/surface.c | 1 + 2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index 71d5c96aa1a..05559b75f9f 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -3939,7 +3939,7 @@ void macdrv_set_view_backing_size(macdrv_view v, const int backing_size[2]) * macdrv_window_background_color * * Returns the standard Mac window background color as a 32-bit value of - * the form 0x00rrggbb. + * the form 0xaarrggbb. */ uint32_t macdrv_window_background_color(void) { @@ -3951,14 +3951,14 @@ uint32_t macdrv_window_background_color(void) // of it is to draw with it. dispatch_once(&once, ^{ OnMainThread(^{ - unsigned char rgbx[4]; - unsigned char *planes = rgbx; + unsigned char rgba[4]; + unsigned char *planes = rgba; NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:&planes pixelsWide:1 pixelsHigh:1 bitsPerSample:8 - samplesPerPixel:3 - hasAlpha:NO + samplesPerPixel:4 + hasAlpha:YES isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bitmapFormat:0 @@ -3970,7 +3970,7 @@ uint32_t macdrv_window_background_color(void) NSRectFill(NSMakeRect(0, 0, 1, 1)); [NSGraphicsContext restoreGraphicsState]; [bitmap release]; - result = rgbx[0] << 16 | rgbx[1] << 8 | rgbx[2]; + result = rgba[0] << 16 | rgba[1] << 8 | rgba[2] | rgba[3] << 24; }); });
diff --git a/dlls/winemac.drv/surface.c b/dlls/winemac.drv/surface.c index a849918dfa7..bf2acf31431 100644 --- a/dlls/winemac.drv/surface.c +++ b/dlls/winemac.drv/surface.c @@ -175,6 +175,7 @@ static struct window_surface *create_surface(HWND hwnd, macdrv_window window, co
if (!(provider = data_provider_create(info->bmiHeader.biSizeImage, &bits))) return NULL; window_background = macdrv_window_background_color(); + window_background &= 0x00ffffff; memset_pattern4(bits, &window_background, info->bmiHeader.biSizeImage);
/* wrap the data in a HBITMAP so we can write to the surface pixels directly */