src/core/linux


Log

Author Commit Date CI Message
Hubert Maier 6a881302 2022-10-30T08:35:59 SDL_IBUS.H: Correct spelling mistake recieve -> receive
Sam Lantinga 99f2a503 2022-10-13T22:40:24 X11 scancode mapping cleanup * Consolidated scancode mapping tables into a single location for all backends * Verified that the xfree86_scancode_table2 is largely identical to the Linux scancode table * Updated the Linux scancode table with the latest kernel keycodes (still unmapped) * Route X11 keysym -> scancode mapping through the linux scancode table (which a few hand-written exceptions), which will allow mappings to automatically get picked up as they are added in the Linux scancode table * Disabled verbose reporting of missing keysym mappings, we have enough data for now
Ludovico de Nittis 379d4780 2022-09-28T10:25:24 dbus: guard against uninitialized D-Bus Before calling any D-Bus related methods we should first ensure that they were correctly loaded. In the event where `LoadDBUSLibrary()` was not able to load the D-Bus library, we should just return early, signalling with SDL_FALSE that we were unable to inhibit the Screensaver. Helps: https://github.com/ValveSoftware/steam-for-linux/issues/8815 Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
Cameron Gutman 71fb91f7 2022-09-26T21:38:09 evdev: Fix build with libudev and joystick subsystem disabled
Ludovico de Nittis 3c78ba57 2022-08-29T11:08:24 dbus: Use xdg-desktop-portal Inhibit when running under Flatpak or Snap In order to inhibit the screen saver, SDL currently uses `org.freedesktop.ScreenSaver.Inhibit()` and, as a fallback, a protocol specific method for X11 or Wayland. Accessing `org.freedesktop.ScreenSaver` is usually not allowed when inside a sandbox like Flatpak, unless the permission has been explicitly granted to the application. Another issue is that the Wayland protocol "Idle inhibit" is relatively new and not yet widely adopted. For example Mutter still doesn't support it. For those reasons, when running under Flatpak or Snap, we should try to inhibit the screen saver by using xdg-desktop-portal instead. This should give us an higher chance of success. Fixes: https://github.com/libsdl-org/SDL/issues/6075 Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
Ludovico de Nittis e8cb4da7 2022-08-26T12:28:33 Add utility function to detect if SDL is inside a sandbox Refactor the previous sandbox check in a standalone function that also includes Snap support. Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
Ludovico de Nittis a3ce700d 2022-08-25T16:18:45 dbus: Add generic internal function to send messages with reply SDL_DBus_CallWithBasicReply() allows us to send a DBus message and get its result, if it is a basic type, e.g. integer or string. With this function we avoid duplicating code. Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
Frank Praznik b72cf207 2022-08-14T09:41:42 core: linux: Don't cache the RealtimeKit D-Bus connection If the D-Bus subsystem is shutdown and restarted mid-execution, the cached connection will be invalid. Fetch it each time that it is used to ensure that the connection is always from the current context.
Adam Butcher 8f5932dc 2022-06-23T16:10:39 evdev: Support user-provided devices via SDL_EVDEV_DEVICES in non-udev mode.
Cameron Gutman a10c57df 2022-07-31T14:18:33 evdev: Report touchpad events with the correct device type
Cameron Gutman 9a33c62e 2022-07-31T14:06:59 evdev: Use SDL_bool for boolean types
Cameron Gutman f9d1f34b 2022-07-31T13:10:43 evdev: Report a unique ID for each mouse device
Cameron Gutman 574db63c 2022-07-31T12:36:11 evdev: Batch mouse axis updates until SYN_REPORT This is necessary for consistent position reports with absolute mice and improves application performance with relative mice by cutting the number of reported mouse motion events roughly in half.
Frank Praznik 22f25b03 2022-07-24T13:22:39 core: linux: Favor xdg-desktop-portal for elevating thread priority Use the xdg-desktop-portal interface to RealtimeKit1, when available, to set realtime scheduling and elevated priority for threads. This portal allows for the use of rtkit within containers such as Flatpak. It will fall back to using RealtimeKit1 directly if the xdg-desktop-portal interface is too old or not available.
rohlem b085c182 2022-07-04T16:38:05 make SDL_SetTextInputRect take a pointer to const The documentation doesn't state that the argument is ever modified, and no implementation does so currently. This is a non-breaking change to guarantee as much to callers.
Mathieu Eyraud 00b95e98 2022-06-18T16:59:35 Fix read of uninitialised variable If the condition (dbus->message_iter_get_arg_type(&sub) == DBUS_TYPE_STRING) is false, subtext is not initialised.
Sam Lantinga adc68758 2022-06-17T10:22:28 Added SDL_copyp to avoid size mismatch when copying values (thanks @1bsyl!) Closes https://github.com/libsdl-org/SDL/pull/5811
Guldoman e5a3acd6 2022-05-05T04:01:05 ime: fcitx: Retrieve cursor position and selection Also, if `SDL_HINT_IME_SUPPORT_EXTENDED_TEXT` is enabled, make use of `SDL_TEXTEDITING_EXT` by sending the full preedit string.
Guldoman dd7bed9e 2022-05-05T03:10:35 ime: ibus: Retrieve cursor position and selection Also, if `SDL_HINT_IME_SUPPORT_EXTENDED_TEXT` is enabled, make use of `SDL_TEXTEDITING_EXT` by sending the full preedit string.
Sam Lantinga 8cd908e0 2022-05-06T10:51:55 Fixed building with Visual Studio 2013 Added SDL_vacopy.h since it needs to be included after Windows headers
Weng Xuetian 138d96c8 2022-04-05T19:30:25 Send key release event to input method. (#5281) Co-authored-by: Ethan Lee <flibitijibibo@gmail.com>
Weng Xuetian ff5b67e5 2022-01-30T16:29:05 IBus should use ev keycode instead of X keycode See: https://github.com/ibus/ibus/blob/5a455b1ead5d72483952356ddfe25b9e3b637e6f/client/gtk2/ibusimcontext.c#L468
Sam Lantinga 120c76c8 2022-01-03T09:40:00 Updated copyright for 2022
Cameron Gutman 2d673e5b 2021-12-06T22:07:33 evdev: Add support for REL_WHEEL_HI_RES and REL_HWHEEL_HI_RES If supported, these come alongside the regular REL_WHEEL and REL_HWHEEL events so it's important that we only process one or the other.
Weng Xuetian 5056b29b 2021-12-02T17:14:58 Fix the wrong int size for fcitx capability.
Sylvain dd6817b3 2021-11-23T10:47:34 Fix warnings: static function, {} initializier, un-needed enum forward declaration
Sylvain fae70349 2021-11-23T10:33:12 Fix warnings: static, include, un-initialized vairables
Sam Lantinga dc9de1e2 2021-11-11T07:03:30 Get the correct USB VID/PID information for /dev/input/js* devices
Mathieu Eyraud 3090812e 2021-11-11T11:27:56 Convert last SDL_IOReady()'s 2nd parameter to flags Conversion missed in https://github.com/libsdl-org/SDL/pull/4897
Sam Lantinga 373216ae 2021-10-07T18:14:16 Added support for touchpads in the Linux evdev code (thanks Francisco!)
Sam Lantinga 345c161f 2021-09-22T09:06:45 Fixed some accidental uses of external C runtime functions
Sam Lantinga bf97c5a2 2021-09-08T14:47:40 Make sure SDL file descriptors don't leak into child processes
David Gow a1ffeda0 2021-08-28T22:52:13 Add SDL_HINT_APP_NAME and DBUS inhibition hint See SDL bug #4703. This implements two new hints: - SDL_APP_NAME - SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME The former is the successor to SDL_HINT_AUDIO_DEVICE_APP_NAME, and acts as a generic "application name" used both by audio drivers and DBUS screensaver inhibition. If SDL_AUDIO_DEVICE_APP_NAME is set, it will still take priority over SDL_APP_NAME. The second allows the "activity name" used by org.freedesktop.ScreenSavver's Inhibit method, which are often shown in the UI as the reason the screensaver (and/or suspend/other power-managment features) are disabled.
Ryan C. Gordon d4839702 2021-08-04T13:30:12 dbus: Wrap init in a spinlock. This prevents a race if two threads that need d-bus try to init it at the same time. Note that SDL_Init will likely handle this from a single thread at startup, but there are places outside of init where one might trigger D-Bus init, like setting thread priority (a common first thing for a new thread to do) resulting in SDL trying to use RTKit. Fixes #4587.
Sam Lantinga 40e5ce7f 2021-06-04T13:23:54 This delay is no longer needed on Steam Link hardware
Steven Noonan b15bbd4e 2021-04-22T16:11:13 SDL_udev: check for NULL return value from udev_device_get_action Signed-off-by: Steven Noonan <steven@valvesoftware.com> Signed-off-by: Sam Lantinga <slouken@libsdl.org>
Ryan C. Gordon 49141996 2021-04-04T00:29:26 ibus: make sure we don't pass a NULL path string over D-Bus. Fixes #2941.
Ethan Lee 5ceb6744 2021-03-28T14:58:41 linux: Fix ibus support on Wayland/XWayland
Sam Lantinga 2f72535c 2021-01-08T09:54:55 Fixed joysticks generating SDL mouse events
Sam Lantinga 9130f7c3 2021-01-02T10:25:38 Updated copyright for 2021
Luca Weiss 040bd7a9 2020-12-28T00:55:28 Fix udev not detecting ID_INPUT_KEY devices when udev is not running https://bugzilla.libsdl.org/show_bug.cgi?id=5308 The udev code labels devices that are found by this code with ID_INPUT_KEY which in turn gets used by SDL to label the devices as SDL_UDEV_DEVICE_KEYBOARD. This was missing for the code path when udev is not running and as such devices such as the power button of a phone was not detected as keyboard input and no devices were emitted.
Sam Lantinga bfffa275 2020-12-14T09:23:53 Fixed bug 5397 - Fcitx input is truncated sowfelicity Split the long text input event into multiple shorten text input event.
Ozkan Sezer 15cbddf4 2020-12-13T18:00:20 linux/SDL_threadprio.c: fix build on older systems: SCHED_RESET_ON_FORK is in kernel >= 2.6.32.
Sam Lantinga cb361896 2020-12-09T07:16:22 Fixed bug 5235 - All internal sources should include SDL_assert.h Ryan C. Gordon We should really stick this in SDL_internal.h or something so it's always available.
Sam Lantinga 1822f97e 2020-11-11T19:37:47 Fixed bug 5346 - Add FreeBSD evdev KBIO keyboard input driver wahil1976 This patch adds the KBIO text input driver for FreeBSD, which allows text input to fully work without text spilling out into the console. It also supports accented input, AltGr keys and Alt Lock combinations. Tested with US accent keys layout and various AltGr layouts.
Simon McVittie aae53d59 2020-11-11T19:15:09 evdev: Detect whether input devices are accelerometers Anything with X, Y and Z axes but no buttons is probably an accelerometer (this is the assumption made in udev). Signed-off-by: Simon McVittie <smcv@collabora.com>
Simon McVittie fdd945f2 2020-11-11T19:14:52 joystick: Use a better heuristic to guess what is a joystick Previously we only checked for at least one button or key and at least the X and Y absolute axes, but this has both false positives and false negatives. Graphics tablets, trackpads and touchscreens all have buttons and absolute X and Y axes, but we don't want to detect those as joysticks. On normal Linux systems ordinary users do not have access to these device nodes, but members of the 'input' group do. Conversely, some game controllers only have digital buttons and no analogue axes (the Nintendo Wiimote is an example), and some have axes and no buttons (steering wheels or flight simulator rudders might not have buttons). Use the more elaborate heuristic factored out from SDL's udev code path to handle these cases. In an ideal world we could use exactly the same heuristic as udev's input_id builtin, but that isn't under a suitable license for inclusion in SDL, so we have to use a parallel implementation of something vaguely similar. Signed-off-by: Simon McVittie <smcv@collabora.com>
Simon McVittie 8db3171b 2020-11-11T19:14:34 udev: Factor out SDL_EVDEV_GuessDeviceClass This works on capability bitfields that can either come from udev or from ioctls, so it is equally applicable to both udev and non-udev input device detection. Signed-off-by: Simon McVittie <smcv@collabora.com>
Sam Lantinga 07eae7d6 2020-11-11T08:47:18 Fix process randomly getting killed when SDL_THREAD_PRIORITY_HIGH/TIME_CRITICAL is set When we request realtime priority from rtkit, we have a rttime limit. If we exceed that limit, the kernel will send SIGKILL to the process to terminate it. This isn't something that most high priority processes will want, only processes that selectively opt into SCHED_RR/FIFO through SDL_HINT_THREAD_PRIORITY_POLICY should be subject to this level of scrutiny. This change: * Switches non-apple posix OSs to use SCHED_OTHER instead of SCHED_RR for SDL_THREAD_PRIORITY_HIGH/SDL_THREAD_PRIORITY_TIME_CRITICAL. * Fixes using a hardcoded RLIMIT_RTTIME, instead queries it from rtkit * Only sets RLIMIT_RTTIME for MakeRealtime rtkit requests * Adds a note regarding the possible SIGKILL with SDL_HINT_THREAD_PRIORITY_POLICY * Introduces SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL to allow apps to acquire realtime scheduling policies on Linux
Sam Lantinga 94924f01 2020-11-09T10:11:55 Fix failing to set high priority for threads on Linux desktop. Debugging inside rtkit showed we were failing the RLIMIT_RTTIME check, now that we're asking for realtime and not just high-priority due to a change in SDL. Between that and the DBus code in SDL being wrong in previous changelist I'm not sure how this could have ever worked.
Sam Lantinga abf9dfd5 2020-11-09T10:11:38 Fix MakeThreadRealtime DBus method call on Linux, type mismatch due to copy paste. Nov 02 20:34:15 redcore rtkit-daemon[2825]: Failed to parse MakeThreadRealtime() method call: Argument 1 is specified to be of type "uint32", but is actually of type "int32" Nov 02 20:34:15 redcore rtkit-daemon[2825]: Failed to parse MakeThreadRealtime() method call: Argument 1 is specified to be of type "uint32", but is actually of type "int32" Docs: http://git.0pointer.net/rtkit.git/tree/README CLIENTS: To be able to make use of realtime scheduling clients may request so with a small D-Bus interface that is accessible on the interface org.freedesktop.RealtimeKit1 as object /org/freedesktop/RealtimeKit1 on the service org.freedesktop.RealtimeKit1: void MakeThreadRealtime(u64 thread_id, u32 priority); void MakeThreadHighPriority(u64 thread_id, s32 priority);
Ozkan Sezer 4ba0a847 2020-06-22T23:24:02 core/linux/SDL_threadprio.c: fix build against older glibc versions
Sam Lantinga cced5eb9 2020-06-04T09:23:18 Fixed bug 5169 - Can not build current sources because of recent thread management changes Manuel Alfayate Corchete I'm trying to build SDL2 with threads support here in GNU/Linux, both X86 and ARM, and it does not seem to be possible ATM: /home/manuel/src/SDLLLL/src/core/linux/SDL_threadprio.c:233:26: error: 'rtkit_max_realtime_priority' undeclared (first use in this function)
Sam Lantinga cc2fe84d 2020-05-26T13:19:48 Getting closer.
Sam Lantinga 0713c579 2020-05-26T13:19:44 More Linux fixes.
Sam Lantinga abd58418 2020-05-26T13:19:19 Make some changes to SDL_SetThreadPriority to try and have SDL transparently handle more of the work. 1. Comment that SDL_SetThreadPriority will make any necessary system changes when applying priority. 2. Add a hint to override SDL's default behavior for scheduler policy. 3. Modify the pthreads SDL_SetThreadPriority so that instead of just using the current thread scheduler policy it will change it to a policy that should work best for the requested priority. 4. Add hint checks in SDL_SetThreadPriority so that #3 can be overridden if desired. 5. Modify the Linux SDL_SetThreadPriority so that in the case that policy, either by SDL defaults or from the hint, is a realtime policy it uses the realtime rtkit API. 6. Prior to calling rtkit on Linux make the necessary thread state changes that rtkit requires. Currently this is done every time as it isn't expected that SDL_SetThreadPriority will be called repeatedly for a thread.
Sam Lantinga eadc8693 2020-05-11T14:31:04 Fixed bug 5103 - Port fcitx support to both fcitx 4 & 5 wengxt Due to the new major fcitx version is coming close, the existing code need to be ported to use new Fcitx dbus interface. The new dbus interface is supported by both fcitx 4 and 5, and has a good side effect, which is that it will work with flatpak for free. Also the patch remove the dependency on fcitx header. Instead, it just hardcodes a few enum value in the code so need to handle the different header for fcitx4 or 5.
Sam Lantinga ba95fa61 2020-04-08T08:42:09 Revert "Fix incorrectly terminated MakeThreadHighPriority dbus message" The first terminator is for input parameters. The second terminator was for the output parameters. If an error occurs when calling MakeThreadHighPriority(), e.g. a bad thread id, then the reply from connection_send_with_reply_and_block() will be null.
Sam Lantinga f4a56d7e 2020-03-30T14:26:15 Enable thread-safety features in libdbus There are multiple SDL APIs that internally sink into dbus calls, e.g. battery status, thread priority. If those calls happen in different threads simultaneously it can result in dbus crashes. To abide by dbus's multithreading guidelines we must call dbus_threads_init_default() to enable dbus's internal locking mechanisms: https://dbus.freedesktop.org/doc/api/html/group__DBusThreads.html#gac7b8a7001befc3eaa8c6b043151008dc Additionally, access to a DBusMessage must be synchronized between threads. SDL was already abiding that guideline as the DBusMessage structs aren't shared. The following email from the dbus mailing list hints that arbitrating access to the DBusConnection on the SDL may also be required: https://lists.freedesktop.org/archives/dbus/2017-September/017306.html
Sam Lantinga 2e667a8b 2020-03-30T14:26:10 Fix incorrectly terminated MakeThreadHighPriority dbus message Currently the message is double terminated, which results in SDL_DBus_CallMethodInternal() incorrectly assuming that the other party is always returning true. I'm not super familiar with dbus, so I'm not sure if this could also be the cause of this bug: https://github.com/ValveSoftware/steam-for-linux/issues/6901
Ryan C. Gordon 369e5f33 2020-03-26T20:28:04 dbus: System bus is optional, we only need a session bus (thanks, tamo!). Fixes Bugzilla #4795.
Fabrice Fontaine cbc65ce8 2020-02-10T13:56:53 src/core/linux/SDL_threadprio.c: fix build without threads Add an include on SDL_error.h to avoid the following build failure without threads: /home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabihf/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabihf/bin/ld: build/.libs/SDL_threadprio.o: in function `SDL_LinuxSetThreadPriority_REAL': SDL_threadprio.c:(.text+0x0): undefined reference to `SDL_Unsupported' Fixes: - http://autobuild.buildroot.org/results/7f7712c5bd47de4a3fcec1e0d0526fd5a3ecd532 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Sam Lantinga a8780c6a 2020-01-16T20:49:25 Updated copyright date for 2020
Sam Lantinga 2bfcf5cd 2019-11-18T14:08:05 Added Linux controller mapping for the Xbox One Elite Series 2 controller in Bluetooth mode
Ryan C. Gordon a747106c 2019-10-09T19:38:16 linux: If D-Bus isn't available on the system, don't keep trying to load it. Fixes Bugzilla #4476.
Sam Lantinga 191fe25b 2019-09-27T15:21:31 Fixed rtkit feature guard
Sam Lantinga 84dc44e2 2019-09-27T15:21:27 Fix the RealtimeKit dbus include guards The SDL_USE_LIBDBUS define is set inside SDL_debug.h, therefore the circular dependency made it impossible for this feature to be enabled. Instead, guard SDL_dbus.h based on the autoconf variable HAVE_DBUS_DBUS_H Additionally, fix one of the rtkit comments. CAP_SYS_NICE isn't required to achieve high priority. But there is some scheduler config that rtkit needs the app to setup.
Sam Lantinga aaec90e5 2019-09-06T08:42:54 Fixed bug 4789 - Linux accelerometers no longer available as joysticks Daniel Drake A long time ago, it was possible to play neverball on Linux using the accelerometer found in HP laptops. The kernel exposes the accelerometer as a joystick (/dev/input/jsX) as well as an evdev device (/dev/input/eventX). I guess it worked fine when SDL was using the js interface, but then stopped working here: http://hg.libsdl.org/SDL/rev/fdaeea9e7567 Looking at current code which uses udev to discover joysticks, it looks for the udev tag ID_INPUT_JOYSTICK. However udev's internal input_id logic specifically tags accelerometers as ID_INPUT_ACCELEROMETER and nothing else. This looks like a good fit for SDL_HINT_ACCELEROMETER_AS_JOYSTICK.
Alex Szpakowski 109cbd6e 2019-08-04T16:56:40 Fix touch-related compile errors on Linux.
Alex Szpakowski d5ec735a 2019-08-01T18:22:12 Add a windowID field to SDL_TouchFingerEvent (bug #4331). This is unimplemented on some platforms and will cause compile errors when building those platform backends for now.
Sam Lantinga 67bb882e 2019-07-03T15:57:55 Fixed bug 4707 - SDL_SetRelativeMouseMode fails on Vivante Cameron Gutman The bugfix in https://hg.libsdl.org/SDL/rev/ca9417a52f18 caused SDL_SetRelativeMouseMode() to begin failing on Vivante (Steam Link). Even though Vivante doesn't have a SetRelativeMouseMode() or WarpMouse() function, it's in relative mode already (because it uses evdev) so the function was actually working as intended. I think providing a no-op SetRelativeMouseMode() function for Vivante is a reasonable fix. Since it's already getting relative events through evdev, it really is a no-op to "enter relative mode". In fact, this is probably the right thing to do for all backends that use evdev (vivante, raspberry, and kmsdrm). Raspberry and kmsdrm both have WarpMouse() implementations so SDL_SetRelativeMouseMode() isn't failing there, but it still seems to make sense not to have to do the fake warping if they're evdev-based anyway.
Ryan C. Gordon d5ebbcb4 2019-07-02T09:43:26 dbus: Don't SimulateUserActivity if we're already inhibiting the screensaver.
Ryan C. Gordon 94658099 2019-07-02T09:38:31 dbus: Add org.freedesktop.ScreenSaver.SimulateUserActivity support.
Sam Lantinga 6c4765a1 2019-06-17T11:10:20 Removed extraneous fprintf() call
Sam Lantinga 93a5e4ce 2019-06-17T08:38:33 Fixed bug 4667 - Build errors on Linux when building without Threads support Manuel Sabogal There is an issue on the latest commit of the mercurial repo when SDL_THREADS_DISABLED is set: src/core/linux/SDL_threadprio.c:79:28: error: unknown type name 'Sint64'; did you mean 'int'
Sam Lantinga d01150ab 2019-06-12T07:55:48 Fixed bug 4665 - Add support for single touch evdev devices Jan Martin Mikkelsen The attached patch adds support for single-touch evdev devices. These devices report ABS_X, ABS_Y and BTN_TOUCH events. This patch sets them up as MT devices with a single slot and handles the appropriate messages.
Sam Lantinga 23569362 2019-06-05T12:01:26 Use SDL sized types
Sam Lantinga 3e329464 2019-06-05T08:54:07 Fixed bug 4656 - SDL_evdev.c uses Linux specific integer types Jan Martin Mikkelsen The file src/core/linux/SDL_evdev.c uses the Linux specific types __u32 and __s32. This breaks things on FreeBSD when building with evdev.
Sylvain Becker ab03892d 2019-04-04T15:19:00 Bug 4576: track both FingerId and TrackId
Sylvain Becker 6bc2d9de 2019-04-02T17:03:58 Bug 4576: remove touch/mouse duplication for linux/EVDEV
Sylvain Becker 052b4f29 2019-03-12T14:20:37 SDL_EVDEV_kbd_init: uninitialized data for ioctl (Bug 4530) Only two chars are used but the full prototype is: int tioclinux(struct tty_struct *tty, unsigned long arg) ==5010== Syscall param ioctl(TIOCLINUX) points to uninitialised byte(s) ==5010== at 0x53E73C7: ioctl (syscall-template.S:78) ==5010== by 0x4A887DA: SDL_EVDEV_Init (SDL_evdev.c:163) ==5010== by 0x4A7D157: KMSDRM_VideoInit (SDL_kmsdrmvideo.c:509) ==5010== by 0x497D959: SDL_VideoInit_REAL (SDL_video.c:529) ==5010== by 0x487ACBC: SDL_InitSubSystem_REAL (SDL.c:171) ==5010== by 0x487B052: SDL_Init_REAL (SDL.c:256) ==5010== by 0x488F7D6: SDL_Init (SDL_dynapi_procs.h:85)
Ryan C. Gordon 861a21f9 2019-01-14T19:43:25 evdev: don't debug log on a BTN_TOUCH from a non-touch device.
Ryan C. Gordon 2755a505 2019-01-14T19:36:54 evdev: Add touchscreen mouse emulation and pressure support (thanks, Zach!). This also solves reports of this log message: "INFO: The key you just pressed is not recognized by SDL. To help get this fixed, please report this to the SDL forums/mailing list <https://discourse.libsdl.org/> EVDEV KeyCode 330" (EVDEV KeyCode 330 is BTN_TOUCH.) Fixes Bugzilla #4147.
Sam Lantinga 5e13087b 2019-01-04T22:01:14 Updated copyright for 2019
Ryan C. Gordon c7b71371 2018-12-05T17:53:38 Whoops, forgot to add a new source file. :/
Ryan C. Gordon 1689e9f9 2018-12-05T16:51:22 linux: Move SDL_LinuxSetThreadPriority() elsewhere to fix build. Fixes Bugzilla #4393.
Ryan C. Gordon fac40f8e 2018-12-01T11:14:20 Patched to compile on Linux with threads enabled. (whoops!)
Ryan C. Gordon c4bc59a5 2018-12-01T10:36:26 Patched to compile on Linux with --disable-threads. Fixes Bugzilla #4393.
Alex Szpakowski 5029d50e 2018-11-10T16:15:48 Add SDL_TouchDeviceType enum and SDL_GetTouchDeviceType(SDL_TouchID id). Touch device types include SDL_TOUCH_DEVICE_DIRECT (a touch screen with window-relative coordinates for touches), SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE (a trackpad-style device with absolute device coordinates), and SDL_TOUCH_DEVICE_INDIRECT_RELATIVE (a trackpad-style device with screen cursor-relative coordinates). Phone screens are an example of a direct device type. Mac trackpads are the indirect-absolute touch device type. The Apple TV remote is an indirect-relative touch device type.
Sam Lantinga 9af581bd 2018-10-31T15:01:20 Fixed bug 4347 - Keyboard LEDs don't work on linux console Rainer Sabelka When using SLD2 on a Linux console with the KMS/DRM video backend and Linux evdev keyboard support, the caps lock, scroll lock, and num lock leds do not work. The attached patch adds ioctls for setting the LED state in SDL_evdev_kbd.c
Micha? Janiszewski 91820998 2018-10-28T21:36:48 Add and update include guards Include guards in most changed files were missing, I added them keeping the same style as other SDL files. In some cases I moved the include guards around to be the first thing the header has to take advantage of any possible improvements compiler may have for inclusion guards.
Ryan C. Gordon 93fb710a 2018-10-03T16:54:24 evdev: Don't initialize struct sigaction with "{ 0 }". It causes warnings on some platforms, depending on the actual definition of sigaction, and since this is static data, it'll be zero'd out anyhow.
Sam Lantinga cd90e2ca 2018-09-24T16:33:14 Fixed bug 4267 - linkage failure with --enable-hidapi because of missing libudev symbols Ozkan Sezer hidapi dynamic udev initial patch
Sam Lantinga 5febdfce 2018-09-24T11:49:25 Fixed whitespace
Ozkan Sezer b6aaefc7 2018-08-29T11:04:02 SDL_evdev.c: undefine _THIS before redefining it. src/core/linux/SDL_evdev.c:104:1: warning: "_THIS" redefined In file included from src/core/linux/../../events/SDL_events_c.h:26, from src/core/linux/SDL_evdev.c:45: src/core/linux/../../events/../video/SDL_sysvideo.h:146:1: warning: this is the location of the previous definition
Ryan C. Gordon f59b0056 2018-08-07T16:56:46 evdev: On sudden termination, make sure keyboard isn't lost (thanks, Tadek!) "In release 2.0.6, when Linux evdev keyboard support has been moved to a separate source file, a feature was added to disable normal keyboard event processing to prevent "spilling" keystrokes to background virtual console. This feature has one unpleasant side effect: if application fails to call `SDL_Exit` before termination or crashes with fatal signal, console is left in unusable state with keyboard not working and no possibility to switch virtual console. If user has a chance, he can login remotely and restore keyboard with `kbd_mode`, otherwise the only option is to reboot the machine. This patch fixes that problem by intercepting fatal signals (with `sigaction`) and process termination (with `atexit`), to restore keyboard state, if it wasn't properly restored with `SDL_Exit`. The function registered with `atexit` also restores original signal handlers, to prevent leaving invalid handlers after SDL library is unloaded, if it was loaded dynamically with `dlopen`. No signal handlers or `atexit` function are installed if SDL boolean hint `SDL_HINT_NO_SIGNAL_HANDLERS` is `SDL_TRUE`. Additionally, if environment variable `SDL_INPUT_LINUX_KEEP_KBD` exists, keyboard initialization function completely skips disabling keyboard. This can be useful for debugging." Fixes Bugzilla #4193.
Ryan C. Gordon b5a420cb 2018-07-13T17:53:24 dbus: Deal with undefined behavior with va_args. Parse out a copy of the varargs ourselves to get to the reply portion, since the original passed to D-Bus might modify or not modify the caller's copy, depending on system ABI.
Sam Lantinga 9924a8e3 2018-06-14T00:51:45 Fixed bug 4094 - No SDL_TEXTEDITING after pressing Alt key on Raspberry Pi Linux This was reproducible by running an SDL app on the console from an ssh login. In this case the terminal wasn't owned by the user running the app, so we were using the default keymap, which didn't have state transitions defined for ctrl and alt, so once we entered that state keypresses would no longer transition out of that state, nor would they generate text. As a workaround, we'll just reset to the default shift state if that happens, which means we'll get text for keys pressed while ctrl is held down, but I don't think that's a big problem. Note that in this case we also can't mute the keyboard, so the keypresses go to the console, which probably isn't what you want...
Sam Lantinga f6366c09 2018-02-13T08:15:39 Fixed bug 3920 - IBus not work with SDL 2.0.7 cjacker After updating from 2.0.5 to 2.0.7, Ibus not work anymore(fcitx still works). Compare with 2.0.5, there are two issues in SDL_ibus.c. 1, SetupConnection always return SDL_FALSE in 2.0.7. 2, 'SetCapabilities' method should be called on 'ibus_conn'. Patch attached.
Sam Lantinga 714085d3 2018-02-13T08:07:52 Fixed bug 3950 - Don't always call dbus_shutdown in SDL_DBus Alexander Larsson dbus_shutdown() is a debug feature which closes all global resources in the dbus library. Calling this should be done by the app, not a library, because if there are multiple users of dbus in the process then SDL could shut it down even though another part is using it. For example, i had an issue with this in mGBA, which uses both Qt and SDL, both using libdbus. I had a session bus, but no system bus (this was in a flatpak sandbox), and when SDL_DBus_Init() failed to init the system bus it called dbus_shudown() and continued on. This caused issues for Qt when running due to its session bus connections having disappeared beneath it.