mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 22:27:42 +00:00
LibGfx: Avoid a ByteBuffer heap allocation in PNG filtering
This commit is contained in:
parent
068615fe5e
commit
491a5f5e34
1 changed files with 11 additions and 12 deletions
|
@ -24,7 +24,6 @@
|
|||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <AK/ByteBuffer.h>
|
||||
#include <AK/Endian.h>
|
||||
#include <AK/LexicalPath.h>
|
||||
#include <AK/MappedFile.h>
|
||||
|
@ -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<true, 0>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<true, 0>(*context.bitmap, y, dummy_scanline);
|
||||
else
|
||||
unfilter_impl<false, 0>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<false, 0>(*context.bitmap, y, dummy_scanline);
|
||||
continue;
|
||||
}
|
||||
if (filter == 1) {
|
||||
if (context.has_alpha())
|
||||
unfilter_impl<true, 1>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<true, 1>(*context.bitmap, y, dummy_scanline);
|
||||
else
|
||||
unfilter_impl<false, 1>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<false, 1>(*context.bitmap, y, dummy_scanline);
|
||||
continue;
|
||||
}
|
||||
if (filter == 2) {
|
||||
if (context.has_alpha())
|
||||
unfilter_impl<true, 2>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<true, 2>(*context.bitmap, y, dummy_scanline);
|
||||
else
|
||||
unfilter_impl<false, 2>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<false, 2>(*context.bitmap, y, dummy_scanline);
|
||||
continue;
|
||||
}
|
||||
if (filter == 3) {
|
||||
if (context.has_alpha())
|
||||
unfilter_impl<true, 3>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<true, 3>(*context.bitmap, y, dummy_scanline);
|
||||
else
|
||||
unfilter_impl<false, 3>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<false, 3>(*context.bitmap, y, dummy_scanline);
|
||||
continue;
|
||||
}
|
||||
if (filter == 4) {
|
||||
if (context.has_alpha())
|
||||
unfilter_impl<true, 4>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<true, 4>(*context.bitmap, y, dummy_scanline);
|
||||
else
|
||||
unfilter_impl<false, 4>(*context.bitmap, y, dummy_scanline.data());
|
||||
unfilter_impl<false, 4>(*context.bitmap, y, dummy_scanline);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue