Partial fix the gesture system for DRM (#3502)
This commit is contained in:
parent
ba75a7a23b
commit
fe34fc7c6b
1 changed files with 20 additions and 3 deletions
|
@ -170,6 +170,11 @@ static const int EvkeyToUnicodeLUT[] = {
|
||||||
// LUT currently incomplete, just mapped the most essential keys
|
// 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
|
// Module Internal Functions Declaration
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
@ -592,6 +597,18 @@ void PollInputEvents(void)
|
||||||
// Reset touch positions
|
// Reset touch positions
|
||||||
//for (int i = 0; i < MAX_TOUCH_POINTS; i++) CORE.Input.Touch.position[i] = (Vector2){ 0, 0 };
|
//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)
|
#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.
|
// 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
|
// stdin reading is still used for legacy purposes, it allows keyboard input trough SSH console
|
||||||
|
@ -603,7 +620,6 @@ void PollInputEvents(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Module Internal Functions Definition
|
// Module Internal Functions Definition
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
@ -1715,7 +1731,7 @@ static void *EventThread(void *arg)
|
||||||
#if defined(SUPPORT_GESTURES_SYSTEM)
|
#if defined(SUPPORT_GESTURES_SYSTEM)
|
||||||
if (gestureUpdate)
|
if (gestureUpdate)
|
||||||
{
|
{
|
||||||
GestureEvent gestureEvent = { 0 };
|
//GestureEvent gestureEvent = { 0 };
|
||||||
|
|
||||||
gestureEvent.touchAction = touchAction;
|
gestureEvent.touchAction = touchAction;
|
||||||
gestureEvent.pointCount = CORE.Input.Touch.pointCount;
|
gestureEvent.pointCount = CORE.Input.Touch.pointCount;
|
||||||
|
@ -1726,7 +1742,8 @@ static void *EventThread(void *arg)
|
||||||
gestureEvent.position[i] = CORE.Input.Touch.position[i];
|
gestureEvent.position[i] = CORE.Input.Touch.position[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
ProcessGestureEvent(gestureEvent);
|
//ProcessGestureEvent(gestureEvent);
|
||||||
|
newGesture = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue