]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
Changed the way the new vm is handling the unloading of programs - respectively clean...
authorblack <black@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 26 Oct 2003 21:54:59 +0000 (21:54 +0000)
committerblack <black@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 26 Oct 2003 21:54:59 +0000 (21:54 +0000)
Moved the key_dest reset from MR_Restart to M_Shutdown/MP_Shutdown.

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@3609 d7cf8633-e32d-0410-b094-e92efae38249

menu.c
prvm_cmds.c
prvm_edict.c

diff --git a/menu.c b/menu.c
index 1ad0b4c36b702358436a5eb6e4e23a54cdce6e80..d3af61eab726e693ba64fd99286a8ad3821b96a1 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -3730,11 +3730,12 @@ void M_Keydown (int key, char ascii)
 
 void M_Shutdown(void)
 {
+       // reset key_dest
+       key_dest = key_game;
 }
 
 void M_Restart(void)
 {
-       key_dest = key_game;
 }
 
 //============================================================================
@@ -3768,6 +3769,10 @@ void MP_Error(void)
        // say it
        Con_Printf("Falling back to normal menu\n");
 
+       key_dest = key_game;
+
+       //PRVM_ResetProg();
+
        // init the normal menu now -> this will also correct the menu router pointers
        MR_SetRouting (TRUE);
 }
@@ -3828,10 +3833,6 @@ void MP_Shutdown (void)
        key_dest = key_game;
 
        // AK not using this cause Im not sure whether this is useful at all instead :
-/*     // free mempools
-       Mem_FreePool(prog->edicts_mempool);
-       Mem_FreePool(prog->edictstring_mempool);
-       Mem_FreePool(prog->progs_mempool);*/
        PRVM_ResetProg();
 
        PRVM_End;
@@ -3875,7 +3876,7 @@ void MP_Init (void)
 
 void MP_Restart(void)
 {
-       key_dest = key_game;
+
        MP_Init();
 }
 
index f587ce6b816ccfd07804112df83a08b167fa0312..7e399492a4e40152fb1e32b09e214a1c400e2370 100644 (file)
@@ -1807,7 +1807,7 @@ void VM_strcat(void)
 {
        char *s;
 
-       if(prog->argc <= 2) 
+       if(prog->argc < 2) 
                PRVM_ERROR("VM_strcat wrong parameter count (min. 2 expected ) !\n");
        
        s = VM_GetTempString();
@@ -2499,7 +2499,8 @@ void VM_Cmd_Init(void)
 
 void VM_Cmd_Reset(void)
 {
-       Mem_EmptyPool(VM_STRINGS_MEMPOOL);
+       //Mem_EmptyPool(VM_STRINGS_MEMPOOL);
+       Mem_FreePool(&VM_STRINGS_MEMPOOL);
        VM_Files_CloseAll();
 }
 
@@ -2842,6 +2843,7 @@ void VM_M_Cmd_Init(void)
 
 void VM_M_Cmd_Reset(void)
 {
-       VM_Cmd_Init();
+       //VM_Cmd_Init();
+       VM_Cmd_Reset();
 }
 
index 1bf6e847d85bfab4a73666299e39ac20a7f2efad..c759fce1eeaf7594ba74c5fe732fc79169ad2659 100644 (file)
@@ -1198,7 +1198,7 @@ PRVM_ResetProg
 
 void PRVM_ResetProg()
 {
-       mempool_t *t1, *t2, *t3;
+       /*mempool_t *t1, *t2, *t3;
 
        t1 = prog->progs_mempool;
        t2 = prog->edictstring_mempool;
@@ -1206,15 +1206,18 @@ void PRVM_ResetProg()
        
        Mem_EmptyPool(prog->progs_mempool);
        Mem_EmptyPool(prog->edictstring_mempool);
-       Mem_EmptyPool(prog->edicts_mempool);
+       Mem_EmptyPool(prog->edicts_mempool);*/
+       Mem_FreePool(&prog->progs_mempool);
+       Mem_FreePool(&prog->edictstring_mempool);
+       Mem_FreePool(&prog->edicts_mempool);
        
        memset(prog,0,sizeof(prvm_prog_t));
        
-       prog->time = &prog->_time;
+       /*prog->time = &prog->_time;
        
        prog->progs_mempool = t1;
        prog->edictstring_mempool = t2;
-       prog->edicts_mempool = t3;
+       prog->edicts_mempool = t3;*/
 
        PRVM_GCALL(reset_cmd)();
 }
@@ -1650,6 +1653,9 @@ void PRVM_InitProg(int prognr)
 
        prog = &prog_list[prognr];
 
+       if(prog->loaded)
+               PRVM_ResetProg();
+
        memset(prog, 0, sizeof(prvm_prog_t));
 
        prog->time = &prog->_time;