Module: wine Branch: stable Commit: 79b2c4a97d6fbcd45dd8c07b4b326ad3b9ef36c5 URL: https://source.winehq.org/git/wine.git/?a=commit;h=79b2c4a97d6fbcd45dd8c07b4...
Author: Damjan Jovanovic damjan.jov@gmail.com Date: Thu Mar 5 03:35:40 2020 +0200
gdiplus: In CompositingModeSourceCopy, fully transparent pixels are drawn black.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42585 Signed-off-by: Damjan Jovanovic damjan.jov@gmail.com Signed-off-by: Vincent Povirk vincent@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit 99a171981cc42970f0caee69e1ceb0e810d5955f) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/gdiplus/graphics.c | 7 ++++++- dlls/gdiplus/tests/image.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index e485e5c99f..810300ae59 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -384,7 +384,12 @@ static GpStatus alpha_blend_bmp_pixels(GpGraphics *graphics, INT dst_x, INT dst_ src_color = ((ARGB*)(src + src_stride * y))[x];
if (comp_mode == CompositingModeSourceCopy) - GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, src_color); + { + if (!(src_color & 0xff000000)) + GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, 0); + else + GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, src_color); + } else { if (!(src_color & 0xff000000)) diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index 62cd79fec6..ad941d266f 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -4208,7 +4208,7 @@ static void test_DrawImage_SourceCopy(void) expect(0, dst_pixels[0]); expect(0xffff0000, dst_pixels[1]); expect(0, dst_pixels[2]); - todo_wine expect(0, dst_pixels[3]); + expect(0, dst_pixels[3]);
status = GdipDeleteGraphics(graphics); expect(Ok, status);