]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - zone.c
don't print PRVM_NAME in each dprint call, it looks terrible (prints multiple times...
[xonotic/darkplaces.git] / zone.c
diff --git a/zone.c b/zone.c
index 03a6bfa3d0a029880641616d42abd802eb5dadc9..d8c54d0aa4b7730eff9385b9399eb84a38de25c8 100644 (file)
--- a/zone.c
+++ b/zone.c
@@ -230,7 +230,7 @@ mempool_t *_Mem_AllocPool(const char *name, int flags, mempool_t *parent, const
 void _Mem_FreePool(mempool_t **pool, const char *filename, int fileline)
 {
        mempool_t **chainaddress, *iter, *temp;
-       
+
        if (*pool)
        {
                if ((*pool)->sentinel1 != MEMHEADER_SENTINEL1)
@@ -245,13 +245,13 @@ void _Mem_FreePool(mempool_t **pool, const char *filename, int fileline)
 
                // free memory owned by the pool
                while ((*pool)->chain)
-                       Mem_Free((void *)((qbyte *) (*pool)->chain + sizeof(memheader_t)));
+                       _Mem_Free((void *)((qbyte *) (*pool)->chain + sizeof(memheader_t)), filename, fileline);
 
                // free child pools, too
                for(iter = poolchain; iter; temp = iter = iter->next)
                        if(iter->parent == *pool)
                                _Mem_FreePool(&temp, filename, fileline);
-               
+
                // free the pool itself
                memset(*pool, 0xBF, sizeof(mempool_t));
                free(*pool);
@@ -262,7 +262,7 @@ void _Mem_FreePool(mempool_t **pool, const char *filename, int fileline)
 void _Mem_EmptyPool(mempool_t *pool, const char *filename, int fileline)
 {
        mempool_t *chainaddress;
-       
+
        if (pool == NULL)
                Sys_Error("Mem_EmptyPool: pool == NULL (emptypool at %s:%i)", filename, fileline);
        if (pool->sentinel1 != MEMHEADER_SENTINEL1)
@@ -272,7 +272,7 @@ void _Mem_EmptyPool(mempool_t *pool, const char *filename, int fileline)
 
        // free memory owned by the pool
        while (pool->chain)
-               Mem_Free((void *)((qbyte *) pool->chain + sizeof(memheader_t)));
+               _Mem_Free((void *)((qbyte *) pool->chain + sizeof(memheader_t)), filename, fileline);
 
        // empty child pools, too
        for(chainaddress = poolchain; chainaddress; chainaddress = chainaddress->next)
@@ -330,6 +330,19 @@ void _Mem_CheckSentinelsGlobal(const char *filename, int fileline)
 #endif
 }
 
+qboolean Mem_IsAllocated(mempool_t *pool, void *data)
+{
+       memheader_t *header;
+       memheader_t *target;
+
+    target = (memheader_t *)((qbyte *) data - sizeof(memheader_t));
+       for( header = pool->chain ; header ; header = header->next )
+               if( header == target )
+                       return true;
+       return false;
+}
+
+
 // used for temporary memory allocations around the engine, not for longterm
 // storage, if anything in this pool stays allocated during gameplay, it is
 // considered a leak
@@ -399,11 +412,11 @@ void MemList_f(void)
        }
 }
 
-extern void R_TextureStats_PrintTotal(void);
+extern void R_TextureStats_Print(qboolean printeach, qboolean printpool, qboolean printtotal);
 void MemStats_f(void)
 {
        Mem_CheckSentinelsGlobal();
-       R_TextureStats_PrintTotal();
+       R_TextureStats_Print(false, false, true);
        Mem_PrintStats();
 }
 
@@ -420,6 +433,12 @@ void Memory_Init (void)
        poolchain = NULL;
 }
 
+void Memory_Shutdown (void)
+{
+//     Mem_FreePool (&zonemempool);
+//     Mem_FreePool (&tempmempool);
+}
+
 void Memory_Init_Commands (void)
 {
        Cmd_AddCommand ("memstats", MemStats_f);