In Ue 4.25.1 and Ubuntu 16.04 and 18.04 Linux, SDL_FINGERUP events are not firing only when doing a swipe. When I tap, the SDL_FINGERUP event trigger, but when the user swipes, the the SDL_FINGERUP event does not trigger, and the finger index increments.
When it reaches 10 the message above occurs.
On Ubuntu 18.04 LTS, after the first missing SDL_FINGERUP, I start receiving “Received unknown SDL event type=2050” messages which are SDL_MULTIGESTURE.
After adding logging to the SDL_MULTIGESTURE event, you can see that the mgesture.numFingers continues to increment until the application is restarted. I’ve seen numFingers report as high as 80 or 90 fingers on the screen.
After 10 swipes, input stops propagating to the game, and the app needs to be restarted.
This block can be worked around by clearing the Touches map while processing the SDL_FINGERDOWN event.
Touches.Empty();
But, the issue persists. The real issue is that there should be a matching SDL_FINGERUP event for every SDL_FINGERDOWN event. and when swiping the screen with a single finger, there should not be SDL_MULTIGESTURE events firing.
Also, for some reason the logs show that for every other swipe, the logs show input as MOUSE_UP, then MOUSE_DOWN, and the other swipes coming in as SDL_FINGERDOWN, followed by SDL_FINGERMOTION without an SDL_FINGERUP.
There is custom logic in the libSDL2 included in UE’s source, so I believe the bug may originate there.
This is the only showstopper in our upgrade from 4.14 to 4.25. It would be great if this can be addressed quickly.
These are the changes I made to LinuxApplication.cpp and SlateUser,cpp to get more consistent logging, and prevent input from being blocked after 10 swipes. Our game does need that SDL_FINGERUP event though.
And adding this to DefaultEngine.ini (on the game side) will filter out log entries unrelated to Touch, and show verbose logging for log messages related to Touch.
[Core.Log]
global=Error
LogLinuxWindow=Verbose
LogLinuxWindowType=Verbose
LogLinuxWindowEvent=Verbose
LogSlate=Verbose
LogLinux=Verbose
PixelStreamerInputDevice
link text