added stopping screen fading if "Escape" key event is pending
authorHolger Schemel <info@artsoft.org>
Sun, 13 Mar 2022 10:17:55 +0000 (11:17 +0100)
committerHolger Schemel <info@artsoft.org>
Sun, 13 Mar 2022 10:17:55 +0000 (11:17 +0100)
src/libgame/sdl.c
src/libgame/system.c
src/libgame/system.h

index 4108b2b531c533825c092df0ceab9fb1fd596d90..1614b1e2fe4a316130af2ee2d8c0c6baa3483134 100644 (file)
@@ -1225,6 +1225,9 @@ void SDLFadeRectangle(int x, int y, int width, int height,
          draw_border_function();
 
        UpdateScreen_WithFrameDelay(&dst_rect2);
+
+       if (PendingEscapeKeyEvent())
+         break;
       }
     }
   }
@@ -1281,6 +1284,9 @@ void SDLFadeRectangle(int x, int y, int width, int height,
 
       // only update the region of the screen that is affected from fading
       UpdateScreen_WithFrameDelay(&dst_rect2);
+
+      if (PendingEscapeKeyEvent())
+       break;
     }
   }
   else         // fading in, fading out or cross-fading
@@ -1307,6 +1313,9 @@ void SDLFadeRectangle(int x, int y, int width, int height,
 
       // only update the region of the screen that is affected from fading
       UpdateScreen_WithFrameDelay(&dst_rect);
+
+      if (PendingEscapeKeyEvent())
+       break;
     }
   }
 
index 3eb9c62d55dc4e42d32de21e5459c876d7542f3d..ea8288e033870af9f9e2308300a5850a993b40d7 100644 (file)
@@ -1845,6 +1845,24 @@ void PushUserEvent(int code, int value1, int value2)
   SDL_PushEvent((SDL_Event *)&event);
 }
 
+boolean PendingEscapeKeyEvent(void)
+{
+  if (PendingEvent())
+  {
+    Event event;
+
+    // check if any key press event is pending
+    if (SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYDOWN, SDL_KEYDOWN) != 1)
+      return FALSE;
+
+    // check if pressed key is "Escape" key
+    if (event.key.keysym.sym == KSYM_Escape)
+      return TRUE;
+  }
+
+  return FALSE;
+}
+
 
 // ============================================================================
 // joystick functions
index afd737d1b8ecca5319975f6fe1115765b4f42a86..123ddc9b7c63240f443a8574b3415c4b0f191ff7 100644 (file)
@@ -2025,6 +2025,7 @@ KeyMod GetKeyModStateFromEvents(void);
 void StartTextInput(int, int, int, int);
 void StopTextInput(void);
 void PushUserEvent(int, int, int);
+boolean PendingEscapeKeyEvent(void);
 
 void InitJoysticks(void);
 boolean ReadJoystick(int, int *, int *, boolean *, boolean *);