return FALSE;
}
-static boolean WaitEventFiltered(Event *event)
+static boolean WaitValidEvent(Event *event)
{
WaitEvent(event);
boolean NextValidEvent(Event *event)
{
while (PendingEvent())
- if (WaitEventFiltered(event))
+ if (WaitValidEvent(event))
return TRUE;
return FALSE;
void ClearEventQueue()
{
- while (PendingEvent())
- {
- Event event;
-
- WaitEvent(&event);
+ Event event;
+ while (NextValidEvent(&event))
+ {
switch (event.type)
{
case EVENT_BUTTONRELEASE:
{
Event event;
- WaitEvent(&event);
+ if (!WaitValidEvent(&event))
+ continue;
switch (event.type)
{
HandleSetupScreen(mx, my, 0, 0, button);
break;
-#if defined(TARGET_SDL2)
case GAME_MODE_PLAYING:
- HandleFollowFinger(mx, my, button);
+ if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ ClickElement(mx, my, button);
+#if defined(TARGET_SDL2)
+ else
+ HandleFollowFinger(mx, my, button);
#endif
#ifdef DEBUG
void HandleNoEvent()
{
// if (button_status && game_status != GAME_MODE_PLAYING)
- if (button_status && (game_status != GAME_MODE_PLAYING || tape.pausing))
+ if (button_status && (game_status != GAME_MODE_PLAYING ||
+ tape.pausing ||
+ level.game_engine_type == GAME_ENGINE_TYPE_MM))
{
HandleButton(0, 0, button_status, -button_status);
}