summaryrefslogtreecommitdiff
path: root/src/heretic/in_lude.c
diff options
context:
space:
mode:
authorSimon Howard2008-09-26 16:25:24 +0000
committerSimon Howard2008-09-26 16:25:24 +0000
commit717ca7f67c77b09c9fc6f36936fbc6bdc4ff8e98 (patch)
tree06c0f946caa74c724ecb3f90e43af7ab049f009e /src/heretic/in_lude.c
parent2fb5056878a2d5a29d8bb9597e2f458b46862ddd (diff)
downloadchocolate-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.c79
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);
}
//========================================================================