gdiplus: Make gdi_alpha_blend fallback to StretchBlt if current Compositing Mode is SourceCopy.

Signed-off-by: Jiajin Cui <cuijiajin@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jiajin Cui 2020-09-03 17:17:43 +08:00 committed by Alexandre Julliard
parent 36ebdfc6b6
commit 5754bd9c0a
1 changed files with 8 additions and 2 deletions

View File

@ -331,8 +331,14 @@ static void round_points(POINT *pti, GpPointF *ptf, INT count)
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, TECHNOLOGY) == DT_RASPRINTER &&
GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS) == SB_NONE)
CompositingMode comp_mode;
INT technology = GetDeviceCaps(graphics->hdc, TECHNOLOGY);
INT shadeblendcaps = GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS);
GdipGetCompositingMode(graphics, &comp_mode);
if ((technology == DT_RASPRINTER && shadeblendcaps == SB_NONE)
|| comp_mode == CompositingModeSourceCopy)
{
TRACE("alpha blending not supported by device, fallback to StretchBlt\n");