improved displaying FPS (debug mode only)
authorHolger Schemel <info@artsoft.org>
Sat, 7 Oct 2017 21:56:10 +0000 (23:56 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 7 Oct 2017 21:56:10 +0000 (23:56 +0200)
src/game.c
src/tools.c

index bc402eca62cde8020db29942716fa85d592a1b5b..ce4fd8cb30e033a0fb9623b99bfe8bcf4dde681a 100644 (file)
@@ -11227,8 +11227,13 @@ void GameActionsExt()
       fps_frames = 0;
       fps_counter = Counter();
 
+      /* always draw FPS to screen after FPS value was updated */
       redraw_mask |= REDRAW_FPS;
     }
+
+    /* only draw FPS if no screen areas are deactivated (invisible warp mode) */
+    if (GetDrawDeactivationMask() == REDRAW_NONE)
+      redraw_mask |= REDRAW_FPS;
   }
 }
 
index d15f800e638e3534adc600d1db7b08694efcc5a7..324bd45bf150f22d8964a81506922b8724d88410 100644 (file)
@@ -622,11 +622,24 @@ void DrawFramesPerSecond()
   char text[100];
   int font_nr = FONT_TEXT_2;
   int font_width = getFontWidth(font_nr);
+  int draw_deactivation_mask = GetDrawDeactivationMask();
+  boolean draw_masked = (draw_deactivation_mask == REDRAW_NONE);
 
-  sprintf(text, "%04.1f fps", global.frames_per_second);
+  /* draw FPS with leading space (needed if field buffer deactivated) */
+  sprintf(text, " %04.1f fps", global.frames_per_second);
 
-  DrawTextExt(backbuffer, WIN_XSIZE - font_width * strlen(text), 0, text,
-             font_nr, BLIT_OPAQUE);
+  /* override draw deactivation mask (required for invisible warp mode) */
+  SetDrawDeactivationMask(REDRAW_NONE);
+
+  /* draw opaque FPS if field buffer deactivated, else draw masked FPS */
+  DrawTextExt(backbuffer, SX + SXSIZE - font_width * strlen(text), SY, text,
+             font_nr, (draw_masked ? BLIT_MASKED : BLIT_OPAQUE));
+
+  /* set draw deactivation mask to previous value */
+  SetDrawDeactivationMask(draw_deactivation_mask);
+
+  /* force full-screen redraw in this frame */
+  redraw_mask = REDRAW_ALL;
 }
 
 #if DEBUG_FRAME_TIME