fixed handling debug keys to prevent handling keys twice
authorHolger Schemel <info@artsoft.org>
Fri, 16 Nov 2018 21:25:30 +0000 (22:25 +0100)
committerHolger Schemel <info@artsoft.org>
Fri, 16 Nov 2018 21:28:03 +0000 (22:28 +0100)
This change has two effects:

- handle debug keys before handling all other defined keys
- if debug key was processed, do not handle this key again

src/events.c
src/events.h
src/tools.c

index 0c5b2bc..6fee5bb 100644 (file)
@@ -1778,11 +1778,14 @@ static void HandleKeysSpecial(Key key)
   }
 }
 
-void HandleKeysDebug(Key key)
+boolean HandleKeysDebug(Key key, int key_status)
 {
 #ifdef DEBUG
   int i;
 
+  if (key_status != KEY_PRESSED)
+    return FALSE;
+
   if (game_status == GAME_MODE_PLAYING || !setup.debug.frame_delay_game_only)
   {
     boolean mod_key_pressed = ((GetKeyModState() & KMOD_Valid) != KMOD_None);
@@ -1809,7 +1812,7 @@ void HandleKeysDebug(Key key)
        else
          Error(ERR_DEBUG, "frame delay == 0 ms (maximum speed)");
 
-       break;
+       return TRUE;
       }
     }
   }
@@ -1822,13 +1825,19 @@ void HandleKeysDebug(Key key)
 
       Error(ERR_DEBUG, "debug mode %s",
            (options.debug ? "enabled" : "disabled"));
+
+      return TRUE;
     }
     else if (key == KSYM_v)
     {
       Error(ERR_DEBUG, "currently using game engine version %d",
            game.engine_version);
+
+      return TRUE;
     }
   }
+
+  return FALSE;
 #endif
 }
 
@@ -1856,6 +1865,9 @@ void HandleKey(Key key, int key_status)
   int joy = 0;
   int i;
 
+  if (HandleKeysDebug(key, key_status))
+    return;            // do not handle already processed keys again
+
   // map special keys (media keys / remote control buttons) to default keys
   if (key == KSYM_PlayPause)
     key = KSYM_space;
@@ -2198,8 +2210,6 @@ void HandleKey(Key key, int key_status)
        return;
       }
   }
-
-  HandleKeysDebug(key);
 }
 
 void HandleNoEvent(void)
index 47a86c5..93504eb 100644 (file)
@@ -31,7 +31,7 @@ void HandleWindowEvent(WindowEvent *);
 void HandleFingerEvent(FingerEvent *);
 void HandleTextEvent(TextEvent *);
 void HandlePauseResumeEvent(PauseResumeEvent *);
-void HandleKeysDebug(Key);
+boolean HandleKeysDebug(Key, int);
 void HandleKeyEvent(KeyEvent *);
 void HandleFocusEvent(FocusChangeEvent *);
 void HandleClientMessageEvent(ClientMessageEvent *);
index 7e6424f..451ef01 100644 (file)
@@ -4387,7 +4387,7 @@ static int RequestHandleEvents(unsigned int req_state)
                break;
 
              default:
-               HandleKeysDebug(key);
+               HandleKeysDebug(key, KEY_PRESSED);
                break;
            }