[PATCH 0/1] MR10653: gdiplus: Assume bitmaps are top-down in image-reading code.
Noticed when looking at https://bugs.winehq.org/show_bug.cgi?id=40409, but I don't think this noticeably improves performance. Still, it cuts down on some extra work and simplifies the code. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10653
From: Esme Povirk <esme@codeweavers.com> GdipCreateBitmapFromScan0 won't choose a negative stride. --- dlls/gdiplus/image.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index d8a63a1d39a..fb77d8e62a4 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -3832,15 +3832,11 @@ static GpStatus decode_frame_wic(IWICBitmapDecoder *decoder, BOOL force_conversi if (status == Ok) /* locked bitmap */ { wrc.X = 0; + wrc.Y = 0; wrc.Width = width; - wrc.Height = 1; - for (i=0; i<height; i++) - { - wrc.Y = i; - hr = IWICBitmapSource_CopyPixels(source, &wrc, abs(lockeddata.Stride), - abs(lockeddata.Stride), (BYTE*)lockeddata.Scan0+lockeddata.Stride*i); - if (FAILED(hr)) break; - } + wrc.Height = height; + hr = IWICBitmapSource_CopyPixels(source, &wrc, lockeddata.Stride, + lockeddata.Stride * height, (BYTE*)lockeddata.Scan0); GdipBitmapUnlockBits(bitmap, &lockeddata); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10653
participants (2)
-
Esme Povirk -
Esme Povirk (@madewokherd)