Review gestures disable flag
This commit is contained in:
parent
a7b06e7f01
commit
7524fdc3e1
56
src/core.c
56
src/core.c
@ -3684,7 +3684,6 @@ static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event)
|
||||
ProcessGestureEvent(gestureEvent);
|
||||
}
|
||||
#else
|
||||
|
||||
// Support only simple touch position
|
||||
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;
|
||||
|
||||
// Register touch actions
|
||||
@ -3822,6 +3822,17 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent
|
||||
|
||||
// Gesture data is sent to gestures system for processing
|
||||
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;
|
||||
}
|
||||
@ -4242,9 +4253,10 @@ static void EventThreadSpawn(char *device)
|
||||
static void *EventThread(void *arg)
|
||||
{
|
||||
struct input_event event;
|
||||
GestureEvent gestureEvent;
|
||||
InputEventWorker *worker = (InputEventWorker *)arg;
|
||||
bool GestureNeedsUpdate = false;
|
||||
|
||||
int touchAction = -1;
|
||||
bool gestureUpdate = false;
|
||||
|
||||
while (!windowShouldClose)
|
||||
{
|
||||
@ -4257,16 +4269,18 @@ static void *EventThread(void *arg)
|
||||
{
|
||||
mousePosition.x += event.value;
|
||||
touchPosition[0].x = mousePosition.x;
|
||||
gestureEvent.touchAction = TOUCH_MOVE;
|
||||
GestureNeedsUpdate = true;
|
||||
|
||||
touchAction = TOUCH_MOVE;
|
||||
gestureUpdate = true;
|
||||
}
|
||||
|
||||
if (event.code == REL_Y)
|
||||
{
|
||||
mousePosition.y += event.value;
|
||||
touchPosition[0].y = mousePosition.y;
|
||||
gestureEvent.touchAction = TOUCH_MOVE;
|
||||
GestureNeedsUpdate = true;
|
||||
|
||||
touchAction = TOUCH_MOVE;
|
||||
gestureUpdate = true;
|
||||
}
|
||||
|
||||
if (event.code == REL_WHEEL)
|
||||
@ -4282,15 +4296,17 @@ static void *EventThread(void *arg)
|
||||
if (event.code == ABS_X)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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
|
||||
@ -4328,9 +4344,10 @@ static void *EventThread(void *arg)
|
||||
if ((event.code == BTN_TOUCH) || (event.code == BTN_LEFT))
|
||||
{
|
||||
currentMouseStateEvdev[MOUSE_LEFT_BUTTON] = event.value;
|
||||
if (event.value > 0) gestureEvent.touchAction = TOUCH_DOWN;
|
||||
else gestureEvent.touchAction = TOUCH_UP;
|
||||
GestureNeedsUpdate = true;
|
||||
|
||||
if (event.value > 0) touchAction = TOUCH_DOWN;
|
||||
else touchAction = TOUCH_UP;
|
||||
gestureUpdate = true;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
// Gesture update
|
||||
if (GestureNeedsUpdate)
|
||||
if (gestureUpdate)
|
||||
{
|
||||
#if defined(SUPPORT_GESTURES_SYSTEM)
|
||||
GestureEvent gestureEvent = { 0 };
|
||||
|
||||
gestureEvent.pointCount = 0;
|
||||
gestureEvent.touchAction = touchAction;
|
||||
|
||||
if (touchPosition[0].x >= 0) gestureEvent.pointCount++;
|
||||
if (touchPosition[1].x >= 0) gestureEvent.pointCount++;
|
||||
if (touchPosition[2].x >= 0) gestureEvent.pointCount++;
|
||||
if (touchPosition[3].x >= 0) gestureEvent.pointCount++;
|
||||
|
||||
gestureEvent.pointerId[0] = 0;
|
||||
gestureEvent.pointerId[1] = 1;
|
||||
gestureEvent.pointerId[2] = 2;
|
||||
gestureEvent.pointerId[3] = 3;
|
||||
|
||||
gestureEvent.position[0] = touchPosition[0];
|
||||
gestureEvent.position[1] = touchPosition[1];
|
||||
gestureEvent.position[2] = touchPosition[2];
|
||||
gestureEvent.position[3] = touchPosition[3];
|
||||
|
||||
ProcessGestureEvent(gestureEvent);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user