diff options
author | Simon Howard | 2008-09-26 16:25:24 +0000 |
---|---|---|
committer | Simon Howard | 2008-09-26 16:25:24 +0000 |
commit | 717ca7f67c77b09c9fc6f36936fbc6bdc4ff8e98 (patch) | |
tree | 06c0f946caa74c724ecb3f90e43af7ab049f009e /src/heretic/in_lude.c | |
parent | 2fb5056878a2d5a29d8bb9597e2f458b46862ddd (diff) | |
download | chocolate-doom-717ca7f67c77b09c9fc6f36936fbc6bdc4ff8e98.tar.gz chocolate-doom-717ca7f67c77b09c9fc6f36936fbc6bdc4ff8e98.tar.bz2 chocolate-doom-717ca7f67c77b09c9fc6f36936fbc6bdc4ff8e98.zip |
Fix up Heretic code for mmaped WAD I/O. Call W_ReleaseLump* instead of
Z_Free/Z_ChangeTag.
Subversion-branch: /branches/raven-branch
Subversion-revision: 1288
Diffstat (limited to 'src/heretic/in_lude.c')
-rw-r--r-- | src/heretic/in_lude.c | 79 |
1 files changed, 50 insertions, 29 deletions
diff --git a/src/heretic/in_lude.c b/src/heretic/in_lude.c index 38c84631..3eb40e9c 100644 --- a/src/heretic/in_lude.c +++ b/src/heretic/in_lude.c @@ -299,44 +299,67 @@ void IN_InitStats(void) } } -//======================================================================== -// -// IN_LoadPics -// -//======================================================================== - -void IN_LoadPics(void) +static void IN_LoadUnloadPics(void (*callback)(char *lumpname, + int lumpnum, + patch_t **ptr)) { int i; switch (gameepisode) { case 1: - patchINTERPIC = W_CacheLumpName("MAPE1", PU_STATIC); + callback("MAPE1", 0, &patchINTERPIC); break; case 2: - patchINTERPIC = W_CacheLumpName("MAPE2", PU_STATIC); + callback("MAPE2", 0, &patchINTERPIC); break; case 3: - patchINTERPIC = W_CacheLumpName("MAPE3", PU_STATIC); + callback("MAPE3", 0, &patchINTERPIC); break; default: break; } - patchBEENTHERE = W_CacheLumpName("IN_X", PU_STATIC); - patchGOINGTHERE = W_CacheLumpName("IN_YAH", PU_STATIC); + + callback("IN_X", 0, &patchBEENTHERE); + callback("IN_YAH", 0, &patchGOINGTHERE); + callback("FONTB13", 0, &FontBNegative); + + callback("FONTB15", 0, &FontBSlash); + callback("FONTB05", 0, &FontBPercent); + FontBLumpBase = W_GetNumForName("FONTB16"); + for (i = 0; i < 10; i++) { - FontBNumbers[i] = W_CacheLumpNum(FontBLumpBase + i, PU_STATIC); + callback(NULL, FontBLumpBase + i, &FontBNumbers[i]); } - FontBLump = W_GetNumForName("FONTB_S") + 1; - FontBNegative = W_CacheLumpName("FONTB13", PU_STATIC); +} + +//======================================================================== +// +// IN_LoadPics +// +//======================================================================== - FontBSlash = W_CacheLumpName("FONTB15", PU_STATIC); - FontBPercent = W_CacheLumpName("FONTB05", PU_STATIC); +static void LoadLumpCallback(char *lumpname, int lumpnum, patch_t **ptr) +{ + if (lumpname == NULL) + { + lumpnum = W_GetNumForName(lumpname); + } + + // Cache the lump + + *ptr = W_CacheLumpNum(lumpnum, PU_STATIC); +} + +void IN_LoadPics(void) +{ + FontBLump = W_GetNumForName("FONTB_S") + 1; patchFaceOkayBase = W_GetNumForName("FACEA0"); patchFaceDeadBase = W_GetNumForName("FACEB0"); + + IN_LoadUnloadPics(LoadLumpCallback); } //======================================================================== @@ -345,23 +368,21 @@ void IN_LoadPics(void) // //======================================================================== -void IN_UnloadPics(void) +static void UnloadLumpCallback(char *lumpname, int lumpnum, patch_t **ptr) { - int i; - - if (patchINTERPIC) + if (lumpname != NULL) { - Z_ChangeTag(patchINTERPIC, PU_CACHE); + W_ReleaseLumpName(lumpname); } - Z_ChangeTag(patchBEENTHERE, PU_CACHE); - Z_ChangeTag(patchGOINGTHERE, PU_CACHE); - for (i = 0; i < 10; i++) + else { - Z_ChangeTag(FontBNumbers[i], PU_CACHE); + W_ReleaseLumpNum(lumpnum); } - Z_ChangeTag(FontBNegative, PU_CACHE); - Z_ChangeTag(FontBSlash, PU_CACHE); - Z_ChangeTag(FontBPercent, PU_CACHE); +} + +void IN_UnloadPics(void) +{ + IN_LoadUnloadPics(UnloadLumpCallback); } //======================================================================== |