]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_screen.c
graceful handling of stack underflows, or host_abortframe, during loading
[xonotic/darkplaces.git] / cl_screen.c
index 790887330f41d4d72d1f532caa10c480a8d863f2..3d75c0b828a22e42103922d161ff4eb5e33deedf 100644 (file)
@@ -1707,6 +1707,13 @@ void SCR_PushLoadingScreen (qboolean redraw, const char *msg, float len_in_paren
 void SCR_PopLoadingScreen (qboolean redraw)
 {
        loadingscreenstack_t *s = loadingscreenstack;
+
+       if(!s)
+       {
+               Con_DPrintf("Popping a loading screen item from an empty stack!\n");
+               return;
+       }
+
        loadingscreenstack = s->prev;
        if(s->prev)
                s->prev->relative_completion = (s->absolute_loading_amount_min + s->absolute_loading_amount_len - s->prev->absolute_loading_amount_min) / s->prev->absolute_loading_amount_len;
@@ -1716,6 +1723,12 @@ void SCR_PopLoadingScreen (qboolean redraw)
                SCR_UpdateLoadingScreenIfShown();
 }
 
+void SCR_ClearLoadingScreen (qboolean redraw)
+{
+       while(loadingscreenstack)
+               SCR_PopLoadingScreen(redraw && !loadingscreenstack->prev);
+}
+
 static float SCR_DrawLoadingStack_r(loadingscreenstack_t *s, float y)
 {
        float size = 8;