Skip to content

Commit

Permalink
Partial fix the gesture system for DRM (#3502)
Browse files Browse the repository at this point in the history
  • Loading branch information
ubkp authored Nov 2, 2023
1 parent ba75a7a commit fe34fc7
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions src/platforms/rcore_drm.c
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@ static const int EvkeyToUnicodeLUT[] = {
// LUT currently incomplete, just mapped the most essential keys
};

#if defined(SUPPORT_GESTURES_SYSTEM)
GestureEvent gestureEvent = { 0 }; // Gesture event to hold data between EventThread() and PollInputEvents()
bool newGesture = false; // Var to trigger ProcessGestureEvent(gestureEvent) on PollInputEvents()
#endif

//----------------------------------------------------------------------------------
// Module Internal Functions Declaration
//----------------------------------------------------------------------------------
Expand Down Expand Up @@ -592,6 +597,18 @@ void PollInputEvents(void)
// Reset touch positions
//for (int i = 0; i < MAX_TOUCH_POINTS; i++) CORE.Input.Touch.position[i] = (Vector2){ 0, 0 };

// Map touch position to mouse position for convenience
CORE.Input.Touch.position[0] = CORE.Input.Mouse.currentPosition;

#if defined(SUPPORT_GESTURES_SYSTEM)
// Call the ProcessGestureEvent here instead of on EventThread() to workaround the threads not matching
if (newGesture)
{
ProcessGestureEvent(gestureEvent);
newGesture = false;
}
#endif

#if defined(SUPPORT_SSH_KEYBOARD_RPI)
// NOTE: Keyboard reading could be done using input_event(s) or just read from stdin, both methods are used here.
// stdin reading is still used for legacy purposes, it allows keyboard input trough SSH console
Expand All @@ -603,7 +620,6 @@ void PollInputEvents(void)
#endif
}


//----------------------------------------------------------------------------------
// Module Internal Functions Definition
//----------------------------------------------------------------------------------
Expand Down Expand Up @@ -1715,7 +1731,7 @@ static void *EventThread(void *arg)
#if defined(SUPPORT_GESTURES_SYSTEM)
if (gestureUpdate)
{
GestureEvent gestureEvent = { 0 };
//GestureEvent gestureEvent = { 0 };

gestureEvent.touchAction = touchAction;
gestureEvent.pointCount = CORE.Input.Touch.pointCount;
Expand All @@ -1726,7 +1742,8 @@ static void *EventThread(void *arg)
gestureEvent.position[i] = CORE.Input.Touch.position[i];
}

ProcessGestureEvent(gestureEvent);
//ProcessGestureEvent(gestureEvent);
newGesture = true;
}
#endif
}
Expand Down

0 comments on commit fe34fc7

Please sign in to comment.