Commit 46390b09 authored by Alexandre Julliard's avatar Alexandre Julliard

winex11: Fix a potential deadlock in the GradientFill non-XRender fallback.

parent c0c7547f
......@@ -1446,11 +1446,13 @@ BOOL X11DRV_GradientFill( PHYSDEV dev, TRIVERTEX *vert_array, ULONG nvert,
}
for (x = 0, pos = min( pt[0].x, pt[1].x ); x < dx; x++, pos++)
{
COLORREF color = RGB( (v[0].Red * (dx - x) + v[1].Red * x) / dx / 256,
int color = X11DRV_PALETTE_ToPhysical( physdev,
RGB( (v[0].Red * (dx - x) + v[1].Red * x) / dx / 256,
(v[0].Green * (dx - x) + v[1].Green * x) / dx / 256,
(v[0].Blue * (dx - x) + v[1].Blue * x) / dx / 256);
(v[0].Blue * (dx - x) + v[1].Blue * x) / dx / 256) );
wine_tsx11_lock();
XSetForeground( gdi_display, physdev->gc, X11DRV_PALETTE_ToPhysical( physdev, color ));
XSetForeground( gdi_display, physdev->gc, color );
XDrawLine( gdi_display, physdev->drawable, physdev->gc,
physdev->dc_rect.left + pos, physdev->dc_rect.top + pt[0].y,
physdev->dc_rect.left + pos, physdev->dc_rect.top + pt[1].y );
......@@ -1491,11 +1493,13 @@ BOOL X11DRV_GradientFill( PHYSDEV dev, TRIVERTEX *vert_array, ULONG nvert,
}
for (y = 0, pos = min( pt[0].y, pt[1].y ); y < dy; y++, pos++)
{
COLORREF color = RGB( (v[0].Red * (dy - y) + v[1].Red * y) / dy / 256,
int color = X11DRV_PALETTE_ToPhysical( physdev,
RGB( (v[0].Red * (dy - y) + v[1].Red * y) / dy / 256,
(v[0].Green * (dy - y) + v[1].Green * y) / dy / 256,
(v[0].Blue * (dy - y) + v[1].Blue * y) / dy / 256);
(v[0].Blue * (dy - y) + v[1].Blue * y) / dy / 256) );
wine_tsx11_lock();
XSetForeground( gdi_display, physdev->gc, X11DRV_PALETTE_ToPhysical( physdev, color ));
XSetForeground( gdi_display, physdev->gc, color );
XDrawLine( gdi_display, physdev->drawable, physdev->gc,
physdev->dc_rect.left + pt[0].x, physdev->dc_rect.top + pos,
physdev->dc_rect.left + pt[1].x, physdev->dc_rect.top + pos );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment