From 4f211d0b688dcba4bf7a0af322cbf1b49cf2a241 Mon Sep 17 00:00:00 2001 From: black Date: Sun, 26 Oct 2003 21:54:59 +0000 Subject: [PATCH] Changed the way the new vm is handling the unloading of programs - respectively cleaned PRVM_ResetProgs. 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 | 13 +++++++------ prvm_cmds.c | 8 +++++--- prvm_edict.c | 14 ++++++++++---- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/menu.c b/menu.c index 1ad0b4c3..d3af61ea 100644 --- 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(); } diff --git a/prvm_cmds.c b/prvm_cmds.c index f587ce6b..7e399492 100644 --- a/prvm_cmds.c +++ b/prvm_cmds.c @@ -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(); } diff --git a/prvm_edict.c b/prvm_edict.c index 1bf6e847..c759fce1 100644 --- a/prvm_edict.c +++ b/prvm_edict.c @@ -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; -- 2.39.2