X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=c7707c2f6f9fcc7c3904003cac863a518fd66243;hb=0e98fc357c7de32acf995fdcfacb7e1517e8e60c;hp=18898fb2c8e1401c1a97d76580b6ddfc1a849914;hpb=bad67e8c9c6b1ba51f001b2a3f79e059e3e2e786;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 18898fb2..c7707c2f 100644 --- a/src/events.c +++ b/src/events.c @@ -39,6 +39,12 @@ static int cursor_mode_last = CURSOR_DEFAULT; static unsigned int special_cursor_delay = 0; static unsigned int special_cursor_delay_value = 1000; + +/* forward declarations for internal use */ +static void HandleNoEvent(void); +static void HandleEventActions(void); + + /* event filter especially needed for SDL event filtering due to delay problems with lots of mouse motion events when mouse button not pressed (X11 can handle this with 'PointerMotionHintMask') */ @@ -318,10 +324,10 @@ void EventLoop(void) if (PendingEvent()) HandleEvents(); else - HandleMouseCursor(); + HandleNoEvent(); - /* also execute after pending events have been processed before */ - HandleNoEvent(); + /* execute event related actions after pending events have been processed */ + HandleEventActions(); /* don't use all CPU time when idle; the main loop while playing has its own synchronization and is CPU friendly, too */ @@ -670,7 +676,7 @@ void HandleFingerEvent(FingerEvent *event) if (game_status != GAME_MODE_PLAYING) return; - if (strEqual(setup.touch.control_type, TOUCH_CONTROL_FOLLOW_FINGER)) + if (strEqual(setup.touch.control_type, TOUCH_CONTROL_OFF)) return; if (strEqual(setup.touch.control_type, TOUCH_CONTROL_VIRTUAL_BUTTONS)) @@ -818,6 +824,9 @@ void HandleFingerEvent(FingerEvent *event) return; } + if (!strEqual(setup.touch.control_type, TOUCH_CONTROL_WIPE_GESTURES)) + return; + // use touch direction control if (event->type == EVENT_FINGERPRESS) @@ -1923,6 +1932,20 @@ void HandleKey(Key key, int key_status) } void HandleNoEvent() +{ + HandleMouseCursor(); + + switch (game_status) + { +#if defined(TARGET_SDL2) + case GAME_MODE_PLAYING: + HandleFollowFinger(-1, -1, -1); + break; +#endif + } +} + +void HandleEventActions() { // if (button_status && game_status != GAME_MODE_PLAYING) if (button_status && (game_status != GAME_MODE_PLAYING || @@ -1951,12 +1974,6 @@ void HandleNoEvent() HandleLevelEditorIdle(); break; -#if defined(TARGET_SDL2) - case GAME_MODE_PLAYING: - HandleFollowFinger(-1, -1, -1); - break; -#endif - default: break; }