diff --git a/src/r_data.c b/src/r_data.c index 005056ec0..4358f7536 100644 --- a/src/r_data.c +++ b/src/r_data.c @@ -1322,29 +1322,28 @@ void R_ReInitColormaps(UINT16 num) // void R_ClearColormaps(void) { - extracolormap_t *exc, *exc_next; + // Purged by PU_LEVEL, just overwrite the pointer + extra_colormaps = R_CreateDefaultColormap(true); +} - for (exc = extra_colormaps; exc; exc = exc_next) - { - exc_next = exc->next; - memset(exc, 0, sizeof(*exc)); - } - - // make a default extra_colormap - exc = Z_Calloc(sizeof (*exc), PU_LEVEL, NULL); +// +// R_CreateDefaultColormap() +// +extracolormap_t *R_CreateDefaultColormap(boolean lighttable) +{ + extracolormap_t *exc = Z_Calloc(sizeof (*exc), PU_LEVEL, NULL); exc->fadestart = 0; exc->fadeend = 31; exc->fog = 0; exc->rgba = 0; exc->fadergba = 0x19000000; - exc->colormap = R_CreateLightTable(exc); + exc->colormap = lighttable ? R_CreateLightTable(exc) : NULL; #ifdef EXTRACOLORMAPLUMPS exc->lump = LUMPERROR; exc->lumpname[0] = 0; #endif exc->next = exc->prev = NULL; - - extra_colormaps = exc; + return exc; } // diff --git a/src/r_data.h b/src/r_data.h index e6eec41b4..718abeccc 100644 --- a/src/r_data.h +++ b/src/r_data.h @@ -105,6 +105,7 @@ INT32 R_CheckTextureNumForName(const char *name); void R_ReInitColormaps(UINT16 num); void R_ClearColormaps(void); +extracolormap_t *R_CreateDefaultColormap(boolean lighttable); void R_AddColormapToList(extracolormap_t *extra_colormap); lighttable_t *R_CreateLightTable(extracolormap_t *extra_colormap); extracolormap_t *R_CreateColormap(char *p1, char *p2, char *p3);