From 491a5f5e34238fc35383cc1bb6179deee8688d78 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 23 Dec 2020 18:06:25 +0100 Subject: [PATCH] LibGfx: Avoid a ByteBuffer heap allocation in PNG filtering --- Libraries/LibGfx/PNGLoader.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Libraries/LibGfx/PNGLoader.cpp b/Libraries/LibGfx/PNGLoader.cpp index a03fafb1d6..11cfaa4353 100644 --- a/Libraries/LibGfx/PNGLoader.cpp +++ b/Libraries/LibGfx/PNGLoader.cpp @@ -24,7 +24,6 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include #include #include #include @@ -465,43 +464,43 @@ NEVER_INLINE FLATTEN static void unfilter(PNGLoadingContext& context) break; } - auto dummy_scanline = ByteBuffer::create_zeroed(context.width * sizeof(RGBA32)); + u8 dummy_scanline[context.width * sizeof(RGBA32)]; for (int y = 0; y < context.height; ++y) { auto filter = context.scanlines[y].filter; if (filter == 0) { if (context.has_alpha()) - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); else - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); continue; } if (filter == 1) { if (context.has_alpha()) - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); else - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); continue; } if (filter == 2) { if (context.has_alpha()) - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); else - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); continue; } if (filter == 3) { if (context.has_alpha()) - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); else - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); continue; } if (filter == 4) { if (context.has_alpha()) - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); else - unfilter_impl(*context.bitmap, y, dummy_scanline.data()); + unfilter_impl(*context.bitmap, y, dummy_scanline); continue; } }