]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_screen.c
Fix a return-from-stack error.
[xonotic/darkplaces.git] / cl_screen.c
index 9b1513b4376f69de76ee0d713b1c046804a658e2..7e15123c133df5b2f088ab58ed836057818ee428 100644 (file)
@@ -7,7 +7,7 @@
 #include "cl_collision.h"
 #include "libcurl.h"
 #include "csprogs.h"
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
 #include "cap_avi.h"
 #include "cap_ogg.h"
 #endif
@@ -60,7 +60,7 @@ cvar_t scr_screenshot_hwgamma = {CVAR_SAVE, "scr_screenshot_hwgamma","1", "apply
 cvar_t scr_screenshot_alpha = {0, "scr_screenshot_alpha","0", "try to write an alpha channel to screenshots (debugging feature)"};
 cvar_t scr_screenshot_timestamp = {CVAR_SAVE, "scr_screenshot_timestamp", "1", "use a timestamp based number of the type YYYYMMDDHHMMSSsss instead of sequential numbering"};
 // scr_screenshot_name is defined in fs.c
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
 cvar_t cl_capturevideo = {0, "cl_capturevideo", "0", "enables saving of video to a .avi file using uncompressed I420 colorspace and PCM audio, note that scr_screenshot_gammaboost affects the brightness of the output)"};
 cvar_t cl_capturevideo_demo_stop = {CVAR_SAVE, "cl_capturevideo_demo_stop", "1", "automatically stops video recording when demo ends"};
 cvar_t cl_capturevideo_printfps = {CVAR_SAVE, "cl_capturevideo_printfps", "1", "prints the frames per second captured in capturevideo (is only written to the log file, not to the console, as that would be visible on the video)"};
@@ -108,6 +108,8 @@ cvar_t r_speeds_graph_x = {CVAR_SAVE, "r_speeds_graph_x", "0", "position of grap
 cvar_t r_speeds_graph_y = {CVAR_SAVE, "r_speeds_graph_y", "0", "position of graph"};
 cvar_t r_speeds_graph_width = {CVAR_SAVE, "r_speeds_graph_width", "256", "size of graph"};
 cvar_t r_speeds_graph_height = {CVAR_SAVE, "r_speeds_graph_height", "128", "size of graph"};
+cvar_t r_speeds_graph_maxtimedelta = {CVAR_SAVE, "r_speeds_graph_maxtimedelta", "16667", "maximum timedelta to display in the graph (this value will be the top line)"};
+cvar_t r_speeds_graph_maxdefault = {CVAR_SAVE, "r_speeds_graph_maxdefault", "100", "if the minimum and maximum observed values are closer than this, use this value as the graph range (keeps small numbers from being big graphs)"};
 
 
 
@@ -694,7 +696,9 @@ static void SCR_SetUpToDrawConsole (void)
 {
        // lines of console to display
        float conlines;
+#ifdef CONFIG_MENU
        static int framecounter = 0;
+#endif
 
        Con_CheckResize ();
 
@@ -707,8 +711,8 @@ static void SCR_SetUpToDrawConsole (void)
                        framecounter++;
        }
        else
-#endif
                framecounter = 0;
+#endif
 
        if (scr_conforcewhiledisconnected.integer && key_dest == key_game && cls.signon != SIGNONS)
                key_consoleactive |= KEY_CONSOLEACTIVE_FORCED;
@@ -1093,7 +1097,7 @@ static void R_TimeReport_EndFrame(void)
                // if we currently have no graph data, reset the graph data entirely
                if (!cls.r_speeds_graph_data)
                        for (i = 0;i < r_stat_count;i++)
-                               cls.r_speeds_graph_datamin[i] = cls.r_speeds_graph_datamax[i] = r_refdef.stats[i];
+                               cls.r_speeds_graph_datamin[i] = cls.r_speeds_graph_datamax[i] = 0;
                if (cls.r_speeds_graph_length != r_speeds_graph_length.integer)
                {
                        int i, stat, index, d, graph_length, *graph_data;
@@ -1134,6 +1138,7 @@ static void R_TimeReport_EndFrame(void)
                int numlines;
                const int *data;
                float x, y, width, height, scalex, scaley;
+               int range_default = max(r_speeds_graph_maxdefault.integer, 1);
                int color, stat, stats, index, range_min, range_max;
                int graph_current, graph_length, *graph_data;
                int statindex[R_SPEEDS_GRAPH_COLORS];
@@ -1222,13 +1227,11 @@ static void R_TimeReport_EndFrame(void)
                                        continue;
                                // prefer to graph stats with 0 base, but if they are
                                // negative we have no choice
-                               range_min = min(cls.r_speeds_graph_datamin[stat], 0);
-                               range_max = cls.r_speeds_graph_datamax[stat];
+                               range_min = cls.r_speeds_graph_datamin[stat];
+                               range_max = max(cls.r_speeds_graph_datamax[stat], range_min + range_default);
                                // some stats we specifically override the graph scale on
                                if (stat == r_stat_timedelta)
-                                       range_max = 100000;
-                               if (range_max == range_min)
-                                       range_max++;
+                                       range_max = r_speeds_graph_maxtimedelta.integer;
                                scaley = height / (range_max - range_min);
                                // generate lines (2 vertices each)
                                // to deal with incomplete data we walk right to left
@@ -1304,12 +1307,12 @@ static void SCR_SizeDown_f (void)
        Cvar_SetValue ("viewsize",scr_viewsize.value-10);
 }
 
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
 void SCR_CaptureVideo_EndVideo(void);
 #endif
 void CL_Screen_Shutdown(void)
 {
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
        SCR_CaptureVideo_EndVideo();
 #endif
 }
@@ -1362,7 +1365,7 @@ void CL_Screen_Init(void)
        Cvar_RegisterVariable (&scr_screenshot_name_in_mapdir);
        Cvar_RegisterVariable (&scr_screenshot_alpha);
        Cvar_RegisterVariable (&scr_screenshot_timestamp);
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
        Cvar_RegisterVariable (&cl_capturevideo);
        Cvar_RegisterVariable (&cl_capturevideo_demo_stop);
        Cvar_RegisterVariable (&cl_capturevideo_printfps);
@@ -1400,6 +1403,8 @@ void CL_Screen_Init(void)
        Cvar_RegisterVariable(&r_speeds_graph_y);
        Cvar_RegisterVariable(&r_speeds_graph_width);
        Cvar_RegisterVariable(&r_speeds_graph_height);
+       Cvar_RegisterVariable(&r_speeds_graph_maxtimedelta);
+       Cvar_RegisterVariable(&r_speeds_graph_maxdefault);
 
        // if we want no console, turn it off here too
        if (COM_CheckParm ("-noconsole"))
@@ -1411,7 +1416,7 @@ void CL_Screen_Init(void)
        Cmd_AddCommand ("envmap", R_Envmap_f, "render a cubemap (skybox) of the current scene");
        Cmd_AddCommand ("infobar", SCR_InfoBar_f, "display a text in the infobar (usage: infobar expiretime string)");
 
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
        SCR_CaptureVideo_Ogg_Init();
 #endif
 
@@ -1541,7 +1546,7 @@ void SCR_ScreenShot_f (void)
        Mem_Free (buffer2);
 }
 
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
 static void SCR_CaptureVideo_BeginVideo(void)
 {
        double r, g, b;
@@ -1771,7 +1776,7 @@ static void SCR_CaptureVideo_VideoFrame(int newframestepframenum)
 
 void SCR_CaptureVideo_SoundFrame(const portable_sampleframe_t *paintbuffer, size_t length)
 {
-       cls.capturevideo.soundsampleframe += length;
+       cls.capturevideo.soundsampleframe += (int)length;
        cls.capturevideo.soundframe(paintbuffer, length);
 }
 
@@ -2770,7 +2775,7 @@ void CL_UpdateScreen(void)
 
        loadingscreendone = false;
 
-       if(gamemode == GAME_NEXUIZ || gamemode == GAME_XONOTIC)
+       if(IS_NEXUIZ_DERIVED(gamemode))
        {
                // play a bit with the palette (experimental)
                palette_rgb_pantscolormap[15][0] = (unsigned char) (128 + 127 * sin(cl.time / exp(1.0f) + 0.0f*M_PI/3.0f));
@@ -2933,7 +2938,7 @@ void CL_UpdateScreen(void)
                SCR_DrawScreen();
        }
 
-#ifdef CONFIG_CAPTURE_VIDEO
+#ifdef CONFIG_VIDEO_CAPTURE
        SCR_CaptureVideo();
 #endif