fixed clearing off-screen areas in fullscreen for different window sizes
authorHolger Schemel <info@artsoft.org>
Wed, 22 Jan 2025 22:34:21 +0000 (23:34 +0100)
committerHolger Schemel <info@artsoft.org>
Wed, 22 Jan 2025 22:38:11 +0000 (23:38 +0100)
src/libgame/sdl.c

index 654616714436b20571e914305fb78f699d39ba8e..da27429e8747d6780166ccea638b52a17ad87350 100644 (file)
@@ -205,20 +205,19 @@ static void UpdateScreenExt(SDL_Rect *rect, boolean with_frame_delay)
   }
 #endif
 
-#if defined(PLATFORM_ANDROID)
-  // clear render target (complete window on Android to clear off-screen areas with touch buttons)
-  SDL_RenderClear(sdl_renderer);
-#endif
+  // clear render target (complete screen in fullscreen mode to clear visible off-screen areas)
+  // (this is especially important for touch buttons on Android and for different window sizes)
+  if (fullscreen_enabled)
+    SDL_RenderClear(sdl_renderer);
 
   // set renderer to use target texture for rendering
   if (video.screen_rendering_mode == SPECIAL_RENDERING_TARGET ||
       video.screen_rendering_mode == SPECIAL_RENDERING_DOUBLE)
     SDL_SetRenderTarget(sdl_renderer, sdl_texture_target);
 
-#if !defined(PLATFORM_ANDROID)
-  // clear render target (target texture only to prevent black flickering when using Metal on Mac)
-  SDL_RenderClear(sdl_renderer);
-#endif
+  // clear render target (target texture only to fix black flickering with Metal window on Mac)
+  if (!fullscreen_enabled)
+    SDL_RenderClear(sdl_renderer);
 
   // copy backbuffer texture to render target buffer
   if (video.screen_rendering_mode != SPECIAL_RENDERING_TARGET)