]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - progsvm.h
Don't allocate resize buffer for texture upload if the texture does not need to be...
[xonotic/darkplaces.git] / progsvm.h
index c4e0f3d1d4ef42517e530b9c302096d6801180fa..0a46d2aaaaad42d1c5951bd98cba02727851a160 100644 (file)
--- a/progsvm.h
+++ b/progsvm.h
@@ -70,7 +70,7 @@ typedef struct prvm_required_field_s
 typedef struct prvm_edict_private_s
 {
        qboolean free;
-       float freetime;
+       float freetime; // realtime of last change to "free" (i.e. also set on allocation)
        int mark; // used during leaktest (0 = unref, >0 = referenced); special values during server physics:
 #define PRVM_EDICT_MARK_WAIT_FOR_SETORIGIN -1
 #define PRVM_EDICT_MARK_SETORIGIN_CAUGHT -2
@@ -513,7 +513,9 @@ typedef struct prvm_prog_funcoffsets_s
 prvm_prog_funcoffsets_t;
 
 // stringbuffer flags
-#define STRINGBUFFER_SAVED     1 // saved in savegames
+#define STRINGBUFFER_SAVED     1   // saved in savegames
+#define STRINGBUFFER_QCFLAGS   1   // allowed to be set by QC
+#define STRINGBUFFER_TEMP      128 // internal use ONLY 
 typedef struct prvm_stringbuffer_s
 {
        int max_strings;
@@ -529,9 +531,10 @@ prvm_stringbuffer_t;
 typedef struct prvm_prog_s
 {
        double                          starttime; // system time when PRVM_Prog_Load was called
+       double                          inittime; // system time when QC initialization code finished (any entity created before is not a leak)
        double                          profiletime; // system time when last PRVM_CallProfile was called (or PRVM_Prog_Load initially)
-       unsigned int            id; // increasing unique id of progs instance
        mfunction_t                     *functions;
+       int                             functions_covered;
        char                            *strings;
        int                                     stringssize;
        ddef_t                          *fielddefs;
@@ -560,8 +563,13 @@ typedef struct prvm_prog_s
        int                                     numglobals;
 
        int                                     *statement_linenums; // NULL if not available
+       int                                     *statement_columnnums; // NULL if not available
 
        double                          *statement_profile; // only incremented if prvm_statementprofiling is on
+       int                             statements_covered;
+       double                          *explicit_profile; // only incremented if prvm_statementprofiling is on
+       int                             explicit_covered;
+       int                             numexplicitcoveragestatements;
 
        union {
                prvm_vec_t *fp;
@@ -675,6 +683,8 @@ typedef struct prvm_prog_s
        // printed together with backtraces
        const char *statestring;
 
+       struct animatemodel_cache *animatemodel_cache;
+
 //     prvm_builtin_mem_t  *mem_list;
 
 // now passed as parameter of PRVM_LoadProgs
@@ -722,7 +732,9 @@ prvm_prog_t *PRVM_FriendlyProgFromString(const char *str); // for console comman
 #define PRVM_ProgLoaded(n) (PRVM_GetProg(n)->loaded)
 #define SVVM_prog (&prvm_prog_list[PRVM_PROG_SERVER])
 #define CLVM_prog (&prvm_prog_list[PRVM_PROG_CLIENT])
+#ifdef CONFIG_MENU
 #define MVM_prog (&prvm_prog_list[PRVM_PROG_MENU])
+#endif
 
 //============================================================================
 // prvm_cmds part
@@ -744,8 +756,10 @@ void SVVM_reset_cmd(prvm_prog_t *prog);
 void CLVM_init_cmd(prvm_prog_t *prog);
 void CLVM_reset_cmd(prvm_prog_t *prog);
 
+#ifdef CONFIG_MENU
 void MVM_init_cmd(prvm_prog_t *prog);
 void MVM_reset_cmd(prvm_prog_t *prog);
+#endif
 
 void VM_Cmd_Init(prvm_prog_t *prog);
 void VM_Cmd_Reset(prvm_prog_t *prog);
@@ -756,11 +770,15 @@ void PRVM_Init (void);
 #ifdef PROFILING
 void SVVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
 void CLVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
+#ifdef CONFIG_MENU
 void MVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
+#endif
 #else
 #define SVVM_ExecuteProgram PRVM_ExecuteProgram
 #define CLVM_ExecuteProgram PRVM_ExecuteProgram
+#ifdef CONFIG_MENU
 #define MVM_ExecuteProgram PRVM_ExecuteProgram
+#endif
 void PRVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
 #endif
 
@@ -881,4 +899,6 @@ void VM_FrameBlendFromFrameGroupBlend(frameblend_t *frameblend, const framegroup
 void VM_UpdateEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed, const dp_model_t *edmodel, const frameblend_t *frameblend);
 void VM_RemoveEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed);
 
+void PRVM_ExplicitCoverageEvent(prvm_prog_t *prog, mfunction_t *func, int statement);
+
 #endif