From fff9bfcde8a1714c6d81f9d506596627ab61ce25 Mon Sep 17 00:00:00 2001
From: havoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Date: Fri, 6 Nov 2009 11:36:27 +0000
Subject: [PATCH] reworked R_SkinFrame_Purge handling to encapsulate all
 modules, not just the model system, this allows skinframes to be persistent
 across levels without being associated with a model

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@9429 d7cf8633-e32d-0410-b094-e92efae38249
---
 model_shared.c | 10 ++++++----
 r_modules.c    |  2 ++
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/model_shared.c b/model_shared.c
index 963140bd..6ea5a859 100644
--- a/model_shared.c
+++ b/model_shared.c
@@ -91,21 +91,23 @@ static void mod_newmap(void)
 	int nummodels = Mem_ExpandableArray_IndexRange(&models);
 	dp_model_t *mod;
 
-	R_SkinFrame_PrepareForPurge();
 	for (i = 0;i < nummodels;i++)
 	{
-		if ((mod = (dp_model_t*) Mem_ExpandableArray_RecordAtIndex(&models, i)) && mod->mempool && mod->data_textures)
+		if ((mod = (dp_model_t*) Mem_ExpandableArray_RecordAtIndex(&models, i)) && mod->mempool)
 		{
-			for (j = 0;j < mod->num_textures;j++)
+			for (j = 0;j < mod->num_textures && mod->data_textures;j++)
 			{
 				for (k = 0;k < mod->data_textures[j].numskinframes;k++)
 					R_SkinFrame_MarkUsed(mod->data_textures[j].skinframes[k]);
 				for (k = 0;k < mod->data_textures[j].backgroundnumskinframes;k++)
 					R_SkinFrame_MarkUsed(mod->data_textures[j].backgroundskinframes[k]);
 			}
+			if (mod->brush.solidskyskinframe)
+				R_SkinFrame_MarkUsed(mod->brush.solidskyskinframe);
+			if (mod->brush.alphaskyskinframe)
+				R_SkinFrame_MarkUsed(mod->brush.alphaskyskinframe);
 		}
 	}
-	R_SkinFrame_Purge();
 
 	if (!cl_stainmaps_clearonload.integer)
 		return;
diff --git a/r_modules.c b/r_modules.c
index df260db6..91221fc3 100644
--- a/r_modules.c
+++ b/r_modules.c
@@ -85,6 +85,7 @@ void R_Modules_Restart(void)
 void R_Modules_NewMap(void)
 {
 	int i;
+	R_SkinFrame_PrepareForPurge();
 	for (i = 0;i < MAXRENDERMODULES;i++)
 	{
 		if (rendermodule[i].name == NULL)
@@ -93,5 +94,6 @@ void R_Modules_NewMap(void)
 			continue;
 		rendermodule[i].newmap();
 	}
+	R_SkinFrame_Purge();
 }
 
-- 
2.39.5