X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=bbc211745fd01ed7ce09ab5648d3c550d0edab80;hb=7756e32954dd1a5db2a8cd49136d23f4ce46ae1e;hp=18898fb2c8e1401c1a97d76580b6ddfc1a849914;hpb=bad67e8c9c6b1ba51f001b2a3f79e059e3e2e786;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 18898fb2..bbc21174 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 */ @@ -1923,6 +1929,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 +1971,6 @@ void HandleNoEvent() HandleLevelEditorIdle(); break; -#if defined(TARGET_SDL2) - case GAME_MODE_PLAYING: - HandleFollowFinger(-1, -1, -1); - break; -#endif - default: break; }