From fe463729c07248e5ecc5295d3a39996ca2b46eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Sroczy=C5=84ski?= Date: Wed, 7 Jan 2026 16:44:03 +0100 Subject: [PATCH] Fix save tga when IL_ORIGIN_UPPER_LEFT is set Remove flip two times: if (TempImage->Origin == IL_ORIGIN_UPPER_LEFT) Temp |= 0x20; //set 5th bit --- DevIL/src-IL/src/il_targa.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/DevIL/src-IL/src/il_targa.cpp b/DevIL/src-IL/src/il_targa.cpp index 8cb0e064..0245fb94 100644 --- a/DevIL/src-IL/src/il_targa.cpp +++ b/DevIL/src-IL/src/il_targa.cpp @@ -719,13 +719,9 @@ ILboolean iSaveTargaInternal() else { TempImage = iCurImage; } - - if (TempImage->Origin != IL_ORIGIN_LOWER_LEFT) { - TempData = (char*)iGetFlipped(TempImage); - } - else - TempData = (char*)TempImage->Data; - + + TempData = (char*)TempImage->Data; + // Write out the origin stuff. iwrite(&zero_short, sizeof(ILshort), 1); iwrite(&zero_short, sizeof(ILshort), 1); @@ -818,10 +814,7 @@ ILboolean iSaveTargaInternal() SaveLittleUInt(ExtOffset); // No extension area SaveLittleUInt(0); // No developer directory iwrite(Footer, 1, ilCharStrLen(Footer)+1); - - if (TempImage->Origin != IL_ORIGIN_LOWER_LEFT) { - ifree(TempData); - } + if (Format == IL_RGB || Format == IL_RGBA) { ilSwapColours(); }