]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_parse.c
add several more R_TimeReport calls for better analysis of csqc time
[xonotic/darkplaces.git] / cl_parse.c
index d5c66b79daebcab9bbb1b3559e1ccb03574cb378..57941d354f8285a350ff8f231d12ffd251800c33 100644 (file)
@@ -1089,13 +1089,18 @@ void CL_BeginDownloads(qboolean aborteddownload)
                        }
                        CL_KeepaliveMessage(true);
 
-                       if(cl.loadmodel_current == 1)
+                       // if running a local game, calling Mod_ForName is a completely wasted effort...
+                       if (sv.active)
+                               cl.model_precache[cl.loadmodel_current] = sv.models[cl.loadmodel_current];
+                       else
                        {
-                               // they'll be soon loaded, but make sure we apply freshly downloaded shaders from a curled pk3
-                               Mod_FreeQ3Shaders();
+                               if(cl.loadmodel_current == 1)
+                               {
+                                       // they'll be soon loaded, but make sure we apply freshly downloaded shaders from a curled pk3
+                                       Mod_FreeQ3Shaders();
+                               }
+                               cl.model_precache[cl.loadmodel_current] = Mod_ForName(cl.model_name[cl.loadmodel_current], false, false, cl.model_name[cl.loadmodel_current][0] == '*' ? cl.model_name[1] : NULL);
                        }
-
-                       cl.model_precache[cl.loadmodel_current] = Mod_ForName(cl.model_name[cl.loadmodel_current], false, false, cl.model_name[cl.loadmodel_current][0] == '*' ? cl.model_name[1] : NULL);
                        SCR_PopLoadingScreen(false);
                        if (cl.model_precache[cl.loadmodel_current] && cl.model_precache[cl.loadmodel_current]->Draw && cl.loadmodel_current == 1)
                        {
@@ -3625,6 +3630,7 @@ void CL_ParseServerMessage(void)
 
                        if (cmd == -1)
                        {
+                               R_TimeReport("END OF MESSAGE");
                                SHOWNET("END OF MESSAGE");
                                break;          // end of message
                        }
@@ -4069,22 +4075,29 @@ void CL_ParseServerMessage(void)
                                CL_ParsePointParticles1();
                                break;
                        }
+                       R_TimeReport(svc_strings[cmd]);
                }
        }
 
        if (cls.signon == SIGNONS)
                CL_UpdateItemsAndWeapon();
+       R_TimeReport("UpdateItems");
 
        EntityFrameQuake_ISeeDeadEntities();
+       R_TimeReport("ISeeDeadEntities");
 
        CL_UpdateMoveVars();
+       R_TimeReport("UpdateMoveVars");
 
        parsingerror = false;
 
        // LordHavoc: this was at the start of the function before cl_autodemo was
        // implemented
        if (cls.demorecording)
+       {
                CL_WriteDemoMessage (&net_message);
+               R_TimeReport("WriteDemo");
+       }
 }
 
 void CL_Parse_DumpPacket(void)