Review gestures disable flag

This commit is contained in:
Ray 2019-03-25 12:30:20 +01:00
parent a7b06e7f01
commit 7524fdc3e1

View File

@ -3684,7 +3684,6 @@ static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event)
ProcessGestureEvent(gestureEvent); ProcessGestureEvent(gestureEvent);
} }
#else #else
// Support only simple touch position // Support only simple touch position
if (flags == AMOTION_EVENT_ACTION_DOWN) if (flags == AMOTION_EVENT_ACTION_DOWN)
{ {
@ -3788,6 +3787,7 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent
} }
*/ */
#if defined(SUPPORT_GESTURES_SYSTEM)
GestureEvent gestureEvent; GestureEvent gestureEvent;
// Register touch actions // Register touch actions
@ -3822,6 +3822,17 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent
// Gesture data is sent to gestures system for processing // Gesture data is sent to gestures system for processing
ProcessGestureEvent(gestureEvent); ProcessGestureEvent(gestureEvent);
#else
// Support only simple touch position
if (eventType == EMSCRIPTEN_EVENT_TOUCHSTART)
{
// Get first touch position
touchPosition[0] = (Vector2){ touchEvent->touches[0].targetX, touchEvent->touches[0].targetY };
touchPosition[0].x /= (float)GetScreenWidth();
touchPosition[0].y /= (float)GetScreenHeight();
}
#endif
return 1; return 1;
} }
@ -4242,9 +4253,10 @@ static void EventThreadSpawn(char *device)
static void *EventThread(void *arg) static void *EventThread(void *arg)
{ {
struct input_event event; struct input_event event;
GestureEvent gestureEvent;
InputEventWorker *worker = (InputEventWorker *)arg; InputEventWorker *worker = (InputEventWorker *)arg;
bool GestureNeedsUpdate = false;
int touchAction = -1;
bool gestureUpdate = false;
while (!windowShouldClose) while (!windowShouldClose)
{ {
@ -4257,16 +4269,18 @@ static void *EventThread(void *arg)
{ {
mousePosition.x += event.value; mousePosition.x += event.value;
touchPosition[0].x = mousePosition.x; touchPosition[0].x = mousePosition.x;
gestureEvent.touchAction = TOUCH_MOVE;
GestureNeedsUpdate = true; touchAction = TOUCH_MOVE;
gestureUpdate = true;
} }
if (event.code == REL_Y) if (event.code == REL_Y)
{ {
mousePosition.y += event.value; mousePosition.y += event.value;
touchPosition[0].y = mousePosition.y; touchPosition[0].y = mousePosition.y;
gestureEvent.touchAction = TOUCH_MOVE;
GestureNeedsUpdate = true; touchAction = TOUCH_MOVE;
gestureUpdate = true;
} }
if (event.code == REL_WHEEL) if (event.code == REL_WHEEL)
@ -4282,15 +4296,17 @@ static void *EventThread(void *arg)
if (event.code == ABS_X) if (event.code == ABS_X)
{ {
mousePosition.x = (event.value - worker->absRange.x)*screenWidth/worker->absRange.width; // Scale acording to absRange mousePosition.x = (event.value - worker->absRange.x)*screenWidth/worker->absRange.width; // Scale acording to absRange
gestureEvent.touchAction = TOUCH_MOVE;
GestureNeedsUpdate = true; touchAction = TOUCH_MOVE;
gestureUpdate = true;
} }
if (event.code == ABS_Y) if (event.code == ABS_Y)
{ {
mousePosition.y = (event.value - worker->absRange.y)*screenHeight/worker->absRange.height; // Scale acording to absRange mousePosition.y = (event.value - worker->absRange.y)*screenHeight/worker->absRange.height; // Scale acording to absRange
gestureEvent.touchAction = TOUCH_MOVE;
GestureNeedsUpdate = true; touchAction = TOUCH_MOVE;
gestureUpdate = true;
} }
// Multitouch movement // Multitouch movement
@ -4328,9 +4344,10 @@ static void *EventThread(void *arg)
if ((event.code == BTN_TOUCH) || (event.code == BTN_LEFT)) if ((event.code == BTN_TOUCH) || (event.code == BTN_LEFT))
{ {
currentMouseStateEvdev[MOUSE_LEFT_BUTTON] = event.value; currentMouseStateEvdev[MOUSE_LEFT_BUTTON] = event.value;
if (event.value > 0) gestureEvent.touchAction = TOUCH_DOWN;
else gestureEvent.touchAction = TOUCH_UP; if (event.value > 0) touchAction = TOUCH_DOWN;
GestureNeedsUpdate = true; else touchAction = TOUCH_UP;
gestureUpdate = true;
} }
if (event.code == BTN_RIGHT) currentMouseStateEvdev[MOUSE_RIGHT_BUTTON] = event.value; if (event.code == BTN_RIGHT) currentMouseStateEvdev[MOUSE_RIGHT_BUTTON] = event.value;
@ -4346,22 +4363,31 @@ static void *EventThread(void *arg)
if (mousePosition.y > screenHeight/mouseScale.y) mousePosition.y = screenHeight/mouseScale.y; if (mousePosition.y > screenHeight/mouseScale.y) mousePosition.y = screenHeight/mouseScale.y;
// Gesture update // Gesture update
if (GestureNeedsUpdate) if (gestureUpdate)
{ {
#if defined(SUPPORT_GESTURES_SYSTEM)
GestureEvent gestureEvent = { 0 };
gestureEvent.pointCount = 0; gestureEvent.pointCount = 0;
gestureEvent.touchAction = touchAction;
if (touchPosition[0].x >= 0) gestureEvent.pointCount++; if (touchPosition[0].x >= 0) gestureEvent.pointCount++;
if (touchPosition[1].x >= 0) gestureEvent.pointCount++; if (touchPosition[1].x >= 0) gestureEvent.pointCount++;
if (touchPosition[2].x >= 0) gestureEvent.pointCount++; if (touchPosition[2].x >= 0) gestureEvent.pointCount++;
if (touchPosition[3].x >= 0) gestureEvent.pointCount++; if (touchPosition[3].x >= 0) gestureEvent.pointCount++;
gestureEvent.pointerId[0] = 0; gestureEvent.pointerId[0] = 0;
gestureEvent.pointerId[1] = 1; gestureEvent.pointerId[1] = 1;
gestureEvent.pointerId[2] = 2; gestureEvent.pointerId[2] = 2;
gestureEvent.pointerId[3] = 3; gestureEvent.pointerId[3] = 3;
gestureEvent.position[0] = touchPosition[0]; gestureEvent.position[0] = touchPosition[0];
gestureEvent.position[1] = touchPosition[1]; gestureEvent.position[1] = touchPosition[1];
gestureEvent.position[2] = touchPosition[2]; gestureEvent.position[2] = touchPosition[2];
gestureEvent.position[3] = touchPosition[3]; gestureEvent.position[3] = touchPosition[3];
ProcessGestureEvent(gestureEvent); ProcessGestureEvent(gestureEvent);
#endif
} }
} }
else else