Commit a1a9fd50c69647cc4e339debec7c5f42a4a2d8a8

Sylvain Becker 2019-04-06T21:43:16

Bug 4581: move tracking appart so it doesn't require the window to have focus

diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c
index 3274cc5..2c5375f 100644
--- a/src/events/SDL_touch.c
+++ b/src/events/SDL_touch.c
@@ -257,19 +257,26 @@ SDL_SendTouch(SDL_TouchID id, SDL_FingerID fingerid,
                         if (finger_touching == SDL_FALSE) {
                             int pos_x = (int)(x * (float)window->w);
                             int pos_y = (int)(y * (float)window->h);
-                            finger_touching = SDL_TRUE;
-                            track_touchid = id;
-                            track_fingerid = fingerid;
                             SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, pos_x, pos_y);
                             SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT);
                         }
                     } else {
                         if (finger_touching == SDL_TRUE && track_touchid == id && track_fingerid == fingerid) {
                             SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT);
-                            finger_touching = SDL_FALSE;
                         }
                     }
                 }
+                if (down) {
+                    if (finger_touching == SDL_FALSE) {
+                        finger_touching = SDL_TRUE;
+                        track_touchid = id;
+                        track_fingerid = fingerid;
+                    }
+                } else {
+                    if (finger_touching == SDL_TRUE && track_touchid == id && track_fingerid == fingerid) {
+                        finger_touching = SDL_FALSE;
+                    }
+                }
             }
         }
     }