added clearing virtual buttons when clearing player action
[rocksndiamonds.git] / src / events.c
index 41b60832fa50f92d165da235a709403b24d034d4..69efaf508189e9631cb3b7f3b08f608f364922f5 100644 (file)
@@ -43,6 +43,7 @@ static boolean stop_processing_events = FALSE;
 
 
 // forward declarations for internal use
+static void ClearTouchInfo(void);
 static void HandleNoEvent(void);
 static void HandleEventActions(void);
 
@@ -442,6 +443,10 @@ void ClearPlayerAction(void)
     stored_player[i].snap_action = 0;
   }
 
+  // simulate finger release events for still pressed virtual buttons
+  overlay.grid_button_action = JOY_NO_ACTION;
+
+  ClearTouchInfo();
   ClearJoystickState();
   ClearPlayerMouseAction();
 }
@@ -708,6 +713,14 @@ static void SetTouchInfo(int pos, SDL_FingerID finger_id, int counter,
   touch_info[pos].action = action;
 }
 
+static void ClearTouchInfo(void)
+{
+  int i;
+
+  for (i = 0; i < NUM_TOUCH_FINGERS; i++)
+    SetTouchInfo(i, 0, 0, 0, JOY_NO_ACTION);
+}
+
 static void HandleFingerEvent_VirtualButtons(FingerEvent *event)
 {
   int x = event->x * overlay.grid_xsize;