Fix flat corruption (from lacto's feffdb37)
This commit is contained in:
parent
fbea771486
commit
fc03c880fb
1 changed files with 12 additions and 5 deletions
|
|
@ -576,21 +576,25 @@ UINT8 *R_GetFlatForTexture(size_t texnum)
|
||||||
lumpnum_t lumpnum = patch->lump;
|
lumpnum_t lumpnum = patch->lump;
|
||||||
boolean doremap = W_NeedPaletteRemapPwad(wadnum, lumpnum, false);
|
boolean doremap = W_NeedPaletteRemapPwad(wadnum, lumpnum, false);
|
||||||
UINT8 *pdata = W_CacheLumpNumPwad(wadnum, lumpnum, PU_CACHE);
|
UINT8 *pdata = W_CacheLumpNumPwad(wadnum, lumpnum, PU_CACHE);
|
||||||
|
size_t lumplength = W_LumpLengthPwad(wadnum, lumpnum);
|
||||||
if (doremap)
|
if (doremap)
|
||||||
{
|
{
|
||||||
R_DoPaletteRemapFlat(pdata, W_LumpLengthPwad(wadnum, lumpnum));
|
R_DoPaletteRemapFlat(pdata, W_LumpLengthPwad(wadnum, lumpnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NO_PNG_LUMPS
|
#ifndef NO_PNG_LUMPS
|
||||||
size_t lumplength = W_LumpLengthPwad(wadnum, lumpnum);
|
|
||||||
if (Picture_IsLumpPNG(pdata, lumplength))
|
if (Picture_IsLumpPNG(pdata, lumplength))
|
||||||
{
|
|
||||||
texture->flat = Picture_PNGConvert(pdata, PICFMT_FLAT, NULL, NULL, NULL, NULL, lumplength, NULL, 0);
|
texture->flat = Picture_PNGConvert(pdata, PICFMT_FLAT, NULL, NULL, NULL, NULL, lumplength, NULL, 0);
|
||||||
Z_Free(pdata);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
texture->flat = pdata;
|
{
|
||||||
|
texture->flat = Z_Malloc(lumplength, PU_STATIC, NULL);
|
||||||
|
memcpy(texture->flat, pdata, lumplength);
|
||||||
|
}
|
||||||
|
|
||||||
|
Z_SetUser(texture->flat, &texture->flat);
|
||||||
|
|
||||||
|
Z_Free(pdata);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
texture->flat = (UINT8 *)Picture_TextureToFlat(texnum);
|
texture->flat = (UINT8 *)Picture_TextureToFlat(texnum);
|
||||||
|
|
@ -1104,7 +1108,10 @@ void R_FlushTextureCache(void)
|
||||||
|
|
||||||
if (numtextures)
|
if (numtextures)
|
||||||
for (i = 0; i < numtextures; i++)
|
for (i = 0; i < numtextures; i++)
|
||||||
|
{
|
||||||
|
Z_Free(textures[i]->flat);
|
||||||
Z_Free(texturecache[i]);
|
Z_Free(texturecache[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Need these prototypes for later; defining them here instead of r_textures.h so they're "private"
|
// Need these prototypes for later; defining them here instead of r_textures.h so they're "private"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue