From b8a8e1bde9382897927945ec0b58b8a2fcfcfe59 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Mon, 22 May 2017 13:20:58 -0500 Subject: [PATCH] gdiplus: Check SHADEBLENDCAPS only for printer devices. Signed-off-by: Vincent Povirk Signed-off-by: Alexandre Julliard --- dlls/gdiplus/graphics.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 6c0d58d862b..815ffb087ef 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -324,7 +324,8 @@ static void transform_and_round_points(GpGraphics *graphics, POINT *pti, static void gdi_alpha_blend(GpGraphics *graphics, INT dst_x, INT dst_y, INT dst_width, INT dst_height, HDC hdc, INT src_x, INT src_y, INT src_width, INT src_height) { - if (GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS) == SB_NONE) + if (GetDeviceCaps(graphics->hdc, TECHNOLOGY) == DT_RASPRINTER && + GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS) == SB_NONE) { TRACE("alpha blending not supported by device, fallback to StretchBlt\n"); @@ -404,7 +405,8 @@ static GpStatus alpha_blend_hdc_pixels(GpGraphics *graphics, INT dst_x, INT dst_ hbitmap = CreateDIBSection(hdc, (BITMAPINFO*)&bih, DIB_RGB_COLORS, (void**)&temp_bits, NULL, 0); - if (GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS) == SB_NONE || + if ((GetDeviceCaps(graphics->hdc, TECHNOLOGY) == DT_RASPRINTER && + GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS) == SB_NONE) || fmt & PixelFormatPAlpha) memcpy(temp_bits, src, src_width * src_height * 4); else -- 2.11.4.GIT