src/video/x11


Log

Author Commit Date CI Message
Sam Lantinga 8ddebfa0 2018-02-16T10:23:10 Fixed bug 4085 - X11: Allow configuring _NET_WM_BYPASS_COMPOSITOR through SDL hints Callum McGing This patch allows the user to disable the behaviour that blocks the compositor through a new hint: SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR. This allows tools or other windowed applications to behave properly under KWin.
sezero 40b27fd5 2018-02-12T17:00:00 revert the recent typecast assignment changes (see bug #4079) also change the void* typedefs for the two vulkan function pointers added in vulkan_internal.h into generic function pointer typedefs.
Sam Lantinga 90e72bf4 2018-01-30T18:08:34 Fixed ISO C99 compatibility SDL now builds with gcc 7.2 with the following command line options: -Wall -pedantic-errors -Wno-deprecated-declarations -Wno-overlength-strings --std=c99
Sam Lantinga e3cc5b2c 2018-01-03T10:03:25 Updated copyright for 2018
Sam Lantinga c5429bd9 2017-11-04T22:06:40 Fixed bug 3939 - Remove static vm_error and vm_event from SDL_x11modes.c tomwardio Remove static int vm_error and vm_event, use local variables instead. This fixes unused variable errors when compiling with SDL_VIDEO_DRIVER_X11_XINERAMA undefined. src/video/x11/SDL_x11modes.c:505:22: error: unused variable 'vm_error' [-Werror,-Wunused-variable] src/video/x11/SDL_x11modes.c:505:12: error: unused variable 'vm_event' [-Werror,-Wunused-variable]
Sven Hesse b89cac67 2017-10-22T20:24:58 Don't X error in SDL_CreateWindow with unsupported GL attributes
Sam Lantinga 5bed4ca9 2017-10-12T08:27:22 Fixed divide by zero with a 1x1 sized window
Sam Lantinga c0019b7f 2017-10-11T13:31:21 Fixed bug 3871 - Touch events are not normalised on X11 Trent Gamblin The documentation for SDL_TouchFingerEvent says that the x and y coordinates are normalised between 0-1. I've found that to be true on Windows, Android and iOS but on X11 they are in pixel coordinates. This patch fixes the issue. This was the cleanest way I could do it with what was available without changing things around a lot but you may know a better way.
Ryan C. Gordon c9e73c3e 2017-09-05T16:15:54 x11: make sure SDL_GetGlobalMouseState notices mouse warping through SDL APIs.
Sam Lantinga 0782f9be 2017-09-05T08:24:38 Fixed bug 3273 - Fix for slow video subsystem initialization when using XRandR. Mart?n Golini I'm having a very slow initialization of the video subsystem that locks the window creation for about 500 ms ( tested in at least 4 different systems ). What i found is that X11_InitModes_XRandR is using XRRGetScreenResources, that explicitly ask to poll the hardware for changes. This is not really necessary since if the data is already available you can use XRRGetScreenResourcesCurrent. I attached a tentative patch that fix this issue. With the patch there's no lock when the subsystem is initialized and the window creation is instant in my applications. The patch only uses XRRGetScreenResourcesCurrent in X11_InitModes_XRandR but it could be potentially used in X11_GetDisplayModes and X11_SetDisplayMode.
Ryan C. Gordon 74043994 2017-09-01T14:08:09 x11: Correctly restore previous GL context after sacrificial context is done.
Ryan C. Gordon a3dda100 2017-09-01T14:00:11 x11: don't try to make a NULL GL context current when we already did that.
Ryan C. Gordon 4649ac46 2017-09-01T13:57:40 x11: Clean up sacrificial GL context code. Check for failures, restore any previously-current context.
Ryan C. Gordon 507659c6 2017-09-01T13:27:53 x11: Make a sacrificial glX context to check for extensions during init. This is necessary because we need to see if GLES compat extensions exist. All of this code (including ShouldUseTextureFramebuffer()) should be revisited after 2.0.6 ships; ideally we don't make throwaway contexts if we can avoid it...but maybe we can't. I hear Vulkan is pretty cool. Fixes Bugzilla #3725.
Sam Lantinga 3c7f9d69 2017-08-28T00:51:14 Fixed redefinition of typedef warnings and errors on BSD
Sam Lantinga 50efbda7 2017-08-28T00:43:14 Fixed mingw Windows build, since SDL_vulkan_internal.h includes windows.h
Sam Lantinga 0d011ec6 2017-08-28T00:22:23 Renaming of guard header names to quiet -Wreserved-id-macro
Sam Lantinga ce2b1644 2017-08-28T00:11:38 Be clear that disabling Vulkan surface support disables the entire SDL Vulkan integration
Ryan C. Gordon 25e3a1ec 2017-08-27T22:15:57 vulkan: Initial Vulkan support! This work was done by Jacob Lifshay and Mark Callow; I'm just merging it into revision control.
Ryan C. Gordon e58c7920 2017-08-25T12:51:42 x11: Patched to compile with DEBUG_XEVENTS defined.
Ethan Lee 685890a2 2017-08-24T22:57:42 Fix KHR_no_error support
Ryan C. Gordon d8fc70ea 2017-08-24T21:30:53 opengl: add support for GL_KHR_no_error. This is completely untested! Fixes Bugzilla #3721.
Brandon Schaefer 17453d49 2017-08-21T23:44:46 x11: Move screen_w/h inside the only ifdef they are referenced in to avoid compiler warnings
Ryan C. Gordon f5a38f23 2017-08-21T00:42:06 x11: specify event mask for buttons when grabbing pointer (thanks, Stas!). This fixes a strange corner case (notes appended below), and should be safe to do anyhow. Fixes Bugzilla #3674. "I did more tests. It appears the bug only happens if there is another window on the screen that has "always on top" property. For me it is xawtv - it is always opened in a screen corner. Closing xawtv or removing "always on top" property from it makes the problem to go away. Plus, it doesn't appear like the buttons are not delivered at all. It appears that instead the button presses are delivered on some mouse positions, but not delivered when you move the mouse to other part of the window... So this is really weird and is likely somewhere deep in the Xorg. Maybe somehow it happens that the cursor is actually above the xawtv window, but, because my app uses grab, it is not visible there, and in that case the events are not delivered to my app? But with my patch the button events are always delivered flawlessly, it seems. Hmm, and that indeed seems to explain my problem: if the mask is set properly and my app uses grab, then, even if the mouse is above some other window, the events would still be delivered to the grabbing app, which is what actually wanted because my app uses relative mouse mode, so it doesn't know the pointer can cross some other window (my app draws the pointer itself). So my current theory is that my patch only enforces the mouse grab, which otherwise can be tricked by some other window preventing the button events delivery (but motion events are still delivered via xinput2, which makes it all look very obscure)."
Ryan C. Gordon 01e0d8fc 2017-08-19T15:02:03 opengl: Add support for [GLX|WGL]_ARB_create_context_robustness. This patch was originally written by Marc Di Luzio for glX and enhanced by Maximilian Malek for WGL, etc. Thanks to both of you! Fixes Bugzilla #3643. Fixes Bugzilla #3735.
Sam Lantinga a4cfa936 2017-08-14T21:28:04 Fixed bug 2293 - Precise scrolling events Martijn Courteaux I implemented precise scrolling events. I have been through all the folders in /src/video/[platform] to implement where possible. This works on OS X, but I can't speak for others. Build farm will figure that out, I guess. I think this patch should introduce precise scrolling on OS X, Wayland, Mir, Windows, Android, Nacl, Windows RT. The way I provide precise scrolling events is by adding two float fields to the SDL_MouseWheelScrollEvent datastructure, called "preciseX" and "preciseY". The old integer fields "x" and "y" are still present. The idea is that every platform specific code normalises the scroll amounts and forwards them to the SDL_SendMouseWheel function. It is this function that will now accumulate these (using a static variable, as I have seen how it was implemented in the Windows specific code) and once we hit a unit size, set the traditional integer "x" and "y" fields. I believe this is pretty solid way of doing it, although I'm not the expert here. There is also a fix in the patch for a typo recently introduced, that might need to be taken away by the time anybody merges this in. There is also a file in Nacl which I have stripped a horrible amount of trailing whitespaces. (Leave that part out if you want).
Sam Lantinga fb835f9e 2017-08-14T20:22:19 Fixed bug 2330 - Debian bug report: SDL2 X11 driver buffer overflow with large X11 file descriptor manuel.montezelo Original bug report (note that it was against 2.0.0, it might have been fixed in between): http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=733015 -------------------------------------------------------- Package: libsdl2-2.0-0 Version: 2.0.0+dfsg1-3 Severity: normal Tags: patch I have occasional crashes here caused by the X11 backend of SDL2. It seems to be caused by the X11_Pending function trying to add a high number (> 1024) file descriptor to a fd_set before doing a select on it to avoid busy waiting on X11 events. This causes a buffer overflow because the file descriptor is larger (or equal) than the limit FD_SETSIZE. Attached is a possible workaround patch. Please also keep in mind that fd_set are also used in following files which may have similar problems. src/audio/bsd/SDL_bsdaudio.c src/audio/paudio/SDL_paudio.c src/audio/qsa/SDL_qsa_audio.c src/audio/sun/SDL_sunaudio.c src/joystick/linux/SDL_sysjoystick.c -------------------------------------------------------- On Tuesday 24 December 2013 00:43:13 Sven Eckelmann wrote: > I have occasional crashes here caused by the X11 backend of SDL2. It seems > to be caused by the X11_Pending function trying to add a high number (> > 1024) file descriptor to a fd_set before doing a select on it to avoid busy > waiting on X11 events. This causes a buffer overflow because the file > descriptor is larger (or equal) than the limit FD_SETSIZE. I personally experienced this problem while hacking on the python bindings package for SDL2 [1] (while doing make runtest). But it easier to reproduce in a smaller, synthetic testcase.
Sam Lantinga 362d5496 2017-08-14T10:28:47 Fixed bug 2500 - X11: SDL tries (and fails) to hide foreign windows Alvin I'm interested in this bug as well. I have experienced it when trying to embed an SDL_Window into a FLTK application. To do this, I create a FLTK window (window inside a window - think video player) and then use SDL_CreateWindowFrom() on the inner most window's Xlib Window*. After which, I create a renderer. In my situation I am using the FLTK GUI toolkit. What I have experienced is that the SDL_CreateRender() will recreate the window in order to properly setup OpenGL capability. As part of this process, the window is hidden and a call is executed that waits indefinitely for an acknowledgement that the window was indeed unmapped. This is where my program hangs. Please correct me if I am wrong, but should SDL2 not make Xlib calls that effect the Xlib Window in this situation (e.g. When SDL_CreateWindowFrom() is used)? The toolkit being used typically assumes responsibility and, I presume, tracks all Xlib Windows it creates. On line src/video/SDL_video.c:1372 the comment associated with setting SDL_WINDOW_FOREIGN reads: /* Can't destroy and re-create foreign windows, hrm */ Since I do not know the reason for hiding the window in the first place, the attached patch simply does not wait for a response when X11_XWithdrawWindow() and X11_XMapRaised() are issued by X11_HideWindow() and X11_ShowWindow(), respectively. I presume that the GUI toolkit (GTK, FLTK, etc.) has or will consume the acknowledging event as it is managing the Xlib Window (or it thinks it is). I have tested the patch against hg 5c645d037de2 and I have successfully tested: * Embedding the SDL_Window inside a FLTK application. * Calling SDL_SetWindowSize() when FLTK resizes the window (e.g. dragging cursor on the edge of the window). * Filling the renderer's default target blue and drawing a red fill square at the centre (exciting, I know!) * Calling SDL_Quit() when the application terminates I do not receive any Xlib erorr messages (BadWindow, etc.) in any of those situations.
Sam Lantinga eb06aba8 2017-08-13T21:16:58 Fixed bug 3742 - minor warning fixes
Ryan C. Gordon 18cceb5c 2017-08-13T01:00:01 x11: Patched to compile.
Ryan C. Gordon 0a1b905b 2017-08-13T00:58:23 x11: Fix message box titles with Unicode chars on some window managers. Fixes Bugzilla #2971.
Sam Lantinga d226594f 2017-08-12T16:48:46 Workaround for bug 3049 - SDL_Init(SDL_INIT_VIDEO) - XDM authorization key matches an existing client! malferit Hello, I began a little program with SDL2 on Linux in C, and when I call SDL_Init(SDL_INIT_VIDEO) I get an error and this is printed in the console: XDM authorization key matches an existing client! I searched through Internet, and found that some people suggest to run 'xhost +' or to specify this in /etc/X11/xdm/xdm-config: DisplayManager*authName: MIT-MAGIC-COOKIE-1 I don't think an end user needs to know that... But what bothered me is that first I started this little program in Pascal using the Freepascal compiler and it works. In freepascal you only use some thin header bindings in Pascal and then it links with the dynamic SDL library, so I don't understood why it worked with Freepascal and not in C. I run ldd to the two generated applications: Application in C: linux-gate.so.1 (0xffffe000) libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0xb76ac000) libpthread.so.0 => /lib/libpthread.so.0 (0xb766e000) libc.so.6 => /lib/libc.so.6 (0xb74e2000) libm.so.6 => /lib/libm.so.6 (0xb74a0000) libdl.so.2 => /lib/libdl.so.2 (0xb749a000) librt.so.1 => /lib/librt.so.1 (0xb7491000) /lib/ld-linux.so.2 (0xb77b3000) Application compiled with Freepascal: linux-gate.so.1 (0xffffe000) libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0xb762a000) libX11.so.6 => /usr/lib/libX11.so.6 (0xb74f3000) libc.so.6 => /lib/libc.so.6 (0xb7367000) libm.so.6 => /lib/libm.so.6 (0xb7325000) libdl.so.2 => /lib/libdl.so.2 (0xb731f000) libpthread.so.0 => /lib/libpthread.so.0 (0xb7305000) librt.so.1 => /lib/librt.so.1 (0xb72fc000) libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb72dc000) libXau.so.6 => /usr/lib/libXau.so.6 (0xb72d9000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb72d3000) /lib/ld-linux.so.2 (0xb7755000) It seems that Freepascal is linking with libX11, libxcb, libXau and libXdmcp . Linking my C application with libxcb solved the problem (linking with libXau and/or libXdmcp without libxcb didn't work). Linking with X11 links all the other libraries and works as well. So I fill this bug report mainly to let you know about this. I don't know if it is a problem that can be solved on the libSDL side or not, but at least I hope it will help. Hi, some tests: 1. Disabled XDM. Login in console and running 'startx'. The program works without having to link with X11. 2. Enabled XDM. Added 'DisplayManager*authName: MIT-MAGIC-COOKIE-1' to /etc/X11/xdm/xdm-config.The program works without having to link with X11. 3. Enabled XDM without 'DisplayManager*authName: MIT-MAGIC-COOKIE-1' in /etc/X11/xdm/xdm-config . I get the authentication error unless I link with X11.
Sam Lantinga 082f32d1 2017-08-02T10:28:13 Fixed bug 3722 - Fall back to xinerama/xvidmode if xrandr modes initialization fails Levi Bard In some environments, xrandr modes initialization can fail even though xrandr support is present and of a sufficient version. (The one I encountered was an AWS instance running a virtual display) The attached patch allows SDL to keep trying other methods if xrandr modes initialization fails (still subject to SDL_VIDEO_X11_REQUIRE_XRANDR).
Sam Lantinga 56363ebf 2017-08-02T10:22:48 Fixed bug 3690 - SDL2 KMS/DRM render context support Manuel The attached patch adds support for KMS/DRM context graphics. It builds with no problem on X86_64 GNU/Linux systems, provided the needed libraries are present, and on ARM GNU/Linux systems that have KMS/DRM support and a GLES2 implementation. Tested on Raspberry Pi: KMS/DRM is what the Raspberry Pi will use as default in the near future, once the propietary DispmanX API by Broadcom is overtaken by open graphics stack, it's possible to boot current Raspbian system in KMS mode by adding "dtoverlay=vc4-kms-v3d" to config.txt on Raspbian's boot partition. X86 systems use KMS right away in every current GNU/Linux system. Simple build instructions: $./autogen.sh $./configure --enable-video-kmsdrm $make
Ryan C. Gordon 2ffd6d02 2017-07-31T13:49:22 x11: Make a separate unmapped window to own clipboard selections. Now the clipboard isn't lost if you destroy a specific SDL_Window, as it works on other platforms. You will still lose the clipboard data on SDL_Quit() or process termination, but that's X11 for you; run a Clipboard Manager daemon. Fixes Bugzilla #3222. Fixes Bugzilla #3718.
Ryan C. Gordon 5574b433 2017-07-31T12:22:18 x11: Pass generic XEvents by pointer instead of copying to stack for XInput2.
Sam Lantinga 177f19af 2017-07-20T10:52:43 Fixed bug 3410 - SDL_WINDOW_HIDDEN flag is inaccurate. Jason Wyatt After hiding the window, SDL_WINDOW_HIDDEN/SDL_WINDOW_SHOWN flags on a window are correctly updated. However on the next SDL_PumpEvents, they are set incorrectly. This appears to be because X11_GetNetWMState does not check whether the _NET_WM_STATE property exists (it shouldn't on unmapped windows, see https://specifications.freedesktop.org/wm-spec/wm-spec-1.3.html#idm140130317598336). This results in an empty list of atoms for the state, which would imply that the window is not hidden. (Seen on Fedora 24, Gnome) -- Dan Ginsburg More details on my proposed patch: I am on Kubuntu 16.04.2. I ran into this same bug, but with Jason's patch I found that actualType != None was true so the SDL_WINDOW_HIDDEN would still not be set. My fix instead is to explicitly check for whether the window is unmapped rather than relying on the returned values in XGetWindowProperty.
Ryan C. Gordon c80c3419 2017-07-04T20:44:07 x11: pass a long to XChangeProperty, not an int. The Xlib documentation demands that 32-bit values here be passed in a long, even when long itself isn't a 32-bit value. Otherwise libx11 might read memory incorrectly. Fixes Bugzilla #3692.
Philipp Wiesemann 4b47fa38 2017-06-04T23:15:47 Removed duplicate includes.
Ryan C. Gordon b3f94acb 2017-05-28T07:11:52 linux: Simplify D-Bus interface, remove lots of boilerplate.
Philipp Wiesemann 90ed3daa 2017-05-26T22:45:52 Changed messages about not recognized keys to include discourse link.
Philipp Wiesemann c66f0471 2017-05-25T23:00:43 Removed unused internal window shape functions.
Bastien Bouclet 545fba78 2017-04-22T19:53:52 x11: Don't send duplicate events when reconciling the keyboard state Failing to check if a key was known to be pressed by SDL was causing SDL_SendKeyboardKey to send duplicate key pressed events with the repeat property set to true. Fixes Bugzilla #3637.
Drew Bliss 66555f61 2017-04-06T13:27:48 SDL - attempt to fix https://github.com/ValveSoftware/Dota-2/issues/1199 of mouse not locking in Dota. This fix is proposed by Ryan Gordon (increase timeout in X11_SetWindowGrab from 250ms to 5000ms). I'm going to integrate to source2 and ship it to dota customers. If it works, SamL will upsteam it to SDL.
Sam Lantinga 5789da67 2017-04-03T13:32:53 Fixed bug 1859 - No SDL_VIDEORESIZE event generated when the window manager sets the window size. Samuel Hopkins Just confirming that the patch from Andreas (attachment 1715 [details]) works for me under SDL 2.0.3 with xmonad. Stas Sergeev Confirming that the patch in this ticket fixes the full-screen switching for dosemu2 on ubuntu-16.04. Note that I am not using xmonad, so this bug appears to be generic.
Philipp Wiesemann 266816b4 2017-03-26T21:00:19 Removed newlines from error messages.
Sam Lantinga cf31ea14 2017-02-11T11:14:48 Fixed bug 3583 - X11 touch device can be permanently lost Volumetric In X11 the SDL error "Unknown touch device" can occur after which the application stops recognizing touch events. For a kiosk-type application this results in a hang as far as the user is concerned. This is reproducible on HP Z220/Z230/Z240 workstations by swapping USB cables for a while and it also occurs with no physical changes, probably due to USB device power management. A workaround is to make SDL re-enumerate the touch devices like it does at startup. A patch is attached.
R?mi Verschelde c3eea703 2017-01-28T10:54:12 Use a stronger X font definition for X11_MessageBox on UTF-8 X11 seemed to be confused by the broad definition, so WEIGHT_NAME, SLANT and SETWIDTH_NAME were defined, thus fixing the font lookup on some systems (tested on Mageia 6 with X11 1.19.1). Fixes bug 3571.
Sam Lantinga 341d1ff9 2017-01-13T11:37:12 Fixed comment
Sam Lantinga a52d48c5 2017-01-10T08:54:33 Fixed bugs 2570, 3145, improved OpenGL ES context support on Windows and X11 Mark Callow The attached patch does the following for the X11 and Windows platforms, the only ones where SDL attempts to use context_create_es_profile: - Adds SDL_HINT_OPENGL_ES_DRIVER by which the application can say to use the OpenGL ES driver & EGL rather than the Open GL driver. (For bug #2570) - Adds code to {WIN,X11}_GL_InitExtensions to determine the maximum OpenGL ES version supported by the OpenGL driver (for bug #3145) - Modifies the test that determines whether to use the OpenGL driver or the real OpenGL ES driver to take into account the hint, the requested and supported ES version and whether ES 1.X is being requested. (For bug #2570 & bug #3145) - Enables the testgles2 test for __WINDOWS__ and __LINUX__ and adds the test to the VisualC projects. With the fix in place I have run testdraw2, testgl and testgles2 without any issues and have run my own apps that use OpenGL, OpenGL ES 3 and OpenGL ES 1.1.
Ryan C. Gordon 13f2e542 2017-01-07T19:55:29 x11: make the X11 target work on macOS with Xquartz.
Ryan C. Gordon 61a3ba30 2017-01-07T17:09:14 Replaced a few single-line "//" comments.
Ryan C. Gordon 9d042052 2017-01-04T09:33:47 x11: deal with xrandr display size in millimeters being zero. Xquartz on macOS reports a zero size, which leads to a division by zero here.
Sam Lantinga 45b774e3 2017-01-01T18:33:28 Updated copyright for 2017
Ryan C. Gordon 7c316366 2016-12-26T23:02:14 x11: Don't loop forever if the X server refuses a pointer grab.
Sam Lantinga e81bf12b 2016-12-12T09:18:42 Fixed edid parsing code for older gcc compilers Ozkan Sezer This adds the name 'ad' to two unnamed unions in edid.h and adjusts edid-parse.c for it. Nameless unions are not supported in ancient gcc, which I happened to use on one of my ancient setups.
Sam Lantinga 7a39681e 2016-12-09T05:04:18 Fixed X11 OpenGL ES build
Sam Lantinga 524bf3c2 2016-12-09T01:47:43 Fixed bug 3513 - SDL_GL_SwapWindow does not return error status Return an error code from SDL_GL_SwapWindow(), like the other SDL APIs.
Sam Lantinga 36156335 2016-11-20T21:34:54 Renaming of guard header names to quiet -Wreserved-id-macro Patch contributed by Sylvain
Sam Lantinga 818d1d3e 2016-11-15T01:30:08 Fixed bug 1646 - Warnings from clang with -Weverything
Sam Lantinga 0d24495b 2016-11-15T01:24:58 Removed unused constants Except for SDL_bmp.c where they are historically interesting and I've left them in.
Sam Lantinga 57d01d7d 2016-11-13T22:57:41 Patch from Sylvain to fix clang warnings
Sam Lantinga 74e1dd4c 2016-11-11T13:14:00 Define _GNU_SOURCE when building SDL
Sam Lantinga d7800312 2016-11-06T09:30:06 Fixed bug 3476 - round() needs _GNU_SOURCE on some old systems Ozkan Sezer On systems with old glibc, such mine with glibc-2.8, the following warning is issued and is fixed easily by defining _GNU_SOURCE: /home/me/SDL2-2.0.5/src/video/x11/SDL_x11modes.c: In function 'CalculateXRandRRefreshRate': /home/me/SDL2-2.0.5/src/video/x11/SDL_x11modes.c:263: warning: implicit declaration of function 'round' /home/me/SDL2-2.0.5/src/video/x11/SDL_x11modes.c:263: warning: incompatible implicit declaration of built-in function 'round'
Sam Lantinga baadd546 2016-11-02T02:56:54 Fixed text input events with UIM Alex Baines I realized overnight that my patch probably broke text input events with UIM, and I confirmed that it does. Can't believe I overlooked that... I've been making stupid mistakes in these patches recently, sorry. Anyway, *this* one seems to fix it properly. Knowing my luck it probably breaks something else.
Sam Lantinga d0c8bf7f 2016-11-01T10:48:59 Patch from Tapani P?lli to fix a memory leak in X11_InitKeyboard Patch uses XkbFreeKeyboard to free the memory returned by XkbGetMap. Earlier implementation called XkbFreeClientMap which frees all the maps but not data->xkb structure itself, XkbFreeKeyboard will free maps and the structure.
Sam Lantinga a1f42765 2016-11-01T10:46:47 Patch from Tapani P?lli to fix a memory leak in X11_GL_CreateContext
Alex Baines 8eb76276 2016-11-01T17:38:05 Skip duplicate key events sent by IMEs like uim.
Alex Baines 5fe98497 2016-10-28T01:28:58 Fix double events / no repeat flag on key events when built withoutibus/fcitx Uses XkbSetDetectableKeyRepeat, and falls back to forcing @im=none if it's not supported.
Sam Lantinga 5af67f49 2016-10-17T21:37:26 Fixed bug 3458 - x11: reset deadkeys in StartTextInput/StopTextInput Eric Wasylishen The patch makes StartTextInput/StopTextInput call Xutf8ResetIC ( https://www.x.org/releases/X11R7.5/doc/man/man3/XmbResetIC.3.html ) on the XIC of all SDL windows. This fixes my use case in Quakespasm (Ubuntu 16.04, system keyboard layout set to German. Type the '^' dead key, which opens Quakespasm's developer console and calls SDL_StartTextInput, then press 'e'. I expect the dead key to be ignored.) Also, here is a patch for sdl2's "checkkeys" for testing this: https://bugzilla-attachments.libsdl.org/attachment.cgi?id=2451
Philipp Wiesemann f6bcfa01 2016-10-12T23:38:31 X11: Fixed compile warning about unused variable.
Sam Lantinga 42f85aa2 2016-10-08T11:30:07 Fixed building and using fcitx IME support on Linux
Sam Lantinga 27d4f099 2016-10-07T23:40:44 Implemented SDL_GetHintBoolean() to make it easier to check boolean hints
Sam Lantinga 808c75d1 2016-10-07T18:57:40 Fixed bug 2824 - Add Fcitx Input Method Support Weitian Leung Just moved ibus direct call to SDL_IME_* related functions, and adds fcitx IME support (uses DBus, too), enable with env: SDL_IM_MODULE=fcitx (ibus still the default one)
Sam Lantinga 8b64a78d 2016-10-07T17:26:25 Fixed bug 2956 - De-reference videodata without NULL check in X11_DispatchEvent(_THIS) function
Alex Baines d9e3972a 2016-10-03T15:31:11 Fix invalid read from poor setlocale usage.
Alex Baines 752931d8 2016-10-03T11:35:34 Improve X11 key handling when XKB isn't available + add xvnc scancodes. Based on a patch by Bill Lash (see bug 3094).
Sam Lantinga d2c8c509 2016-10-01T14:54:05 Fixed build for X11
Sam Lantinga fa0f4176 2016-10-01T14:48:18 Fixed build warnings and errors
Sam Lantinga 359f59ae 2016-10-01T14:22:10 Fixed bug 3130 - Spacebar not responding Alex Baines Make sure group is valid before passing it to XkbKeysymToKeycode.
Sam Lantinga 0250eb3c 2016-10-01T14:16:04 Fixed bug 3134 - CalculateXRandRRefreshRate() returns incorrect refresh rate due to floating point truncation. Michael In SDL_x11modes.c the CalculateXRandRRefreshRate() function performs integer math on values that may return fractional results. This causes a value that would be calculated as 59.99972... to be returned as 59. In Linux the xrandr command returns 60Hz for this particular display mode yet SDL returns 59Hz. I suggest this function be updated to correctly round the result of the calculation instead of truncating the result.
Ryan C. Gordon b2510d9c 2016-09-29T23:01:43 x11: fixed incorrect SDL_GetWindowPosition() after resize (thanks, Jason!). Fixes Bugzilla #3272.
Ryan C. Gordon 4f4c4b62 2016-09-29T22:52:41 Added SDL_SetWindowResizable(). (thanks, Ethan!)
Sam Lantinga 67bdbcca 2016-09-29T16:05:29 Implemented SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH on X11
Philipp Wiesemann d7b9d321 2016-05-20T22:15:28 X11: Fixed typos in error messages and source comments.
Philipp Wiesemann 81235118 2016-05-20T22:14:40 X11: Fixed missing error message if SDL_GetDisplayDPI() failed.
Philipp Wiesemann e964d00f 2016-05-11T21:11:12 X11: Fixed SDL_GL_GetSwapInterval() returning -1 if interval is unknown. It should return 0 as a safe default if the interval can not be determined.
Ryan C. Gordon f647dfe8 2016-03-04T19:41:16 x11: Fix a few more XMoveWindow() calls to adjust for border size. Also, fix my inability to do basic math ('+' should have been '-').
Ryan C. Gordon 02f49fdb 2016-03-04T18:47:19 x11: Deal with window borders better. - Cache the _NET_FRAME_EXTENTS data locally, so we don't have to query the X server for them (instead, we update our cached data when PropertyNotify events alert us to a change). - Use our cached extents for X11_GetWindowBordersSize(), so it's a fast call. - Window position was meant to refer to the client area, not the window decorations, so adjust appropriately when getting/setting the position.
Ryan C. Gordon 2436ca20 2016-02-20T01:03:39 x11: better fix for the previous commit's fullscreen vs maximized issue.
Ryan C. Gordon a4627c5e 2016-02-20T00:44:42 x11: Don't mess with fullscreen vs maximized window state on unmapped windows.
Ryan C. Gordon df4be2f2 2016-02-18T23:27:58 x11/wayland/mir: Make the dynamic loading macro salsa a little less messy.
Ryan C. Gordon 45407d0e 2016-02-15T21:49:09 x11: Removed an assert. This assert triggers when run under XMonad. It's safe to pass a zero here anyhow, as this will still work "well enough" and the original problem--GNOME printing a warning message--is still fixed because GNOME's window manager gives us a chance to grab a non-zero user-time value before this code is run.
Ryan C. Gordon 0e2badc1 2016-02-12T00:27:21 x11: Patched to compile with DEBUG_XEVENTS on C89 compilers.
Ryan C. Gordon 5ed63ae3 2016-02-08T01:08:21 x11: Updated imKStoUCS.* to latest from x.org. This was a version from XFree86 before now. :) Although not much has changed.
Alex Szpakowski 32592178 2016-01-31T09:39:42 x11: Fix AltGr generating an invalid keycode (bug #3244). Thanks Thomas!
Ryan C. Gordon ed620333 2016-01-07T19:58:00 x11: make last mouse coords sane upon window entry (thanks, Cengiz!). (and thanks to Cengiz for many of the previous Unreal-related patches! They were generically credited to Epic Games, but a large amount of that work was his contribution.) Fixes Bugzilla #3067.
Ryan C. Gordon eeb89999 2016-01-05T05:22:35 Patched to compile.
Ryan C. Gordon 3bdaf4c6 2016-01-05T02:46:10 Added SDL_SetWindowOpacity() and SDL_GetWindowOpacity(). This is currently implemented for X11, Cocoa, Windows, and DirectFB. This patch is based on work in Unreal Engine 4's fork of SDL, compliments of Epic Games.
Ryan C. Gordon f9d478b6 2016-01-05T02:40:14 x11: _NET_WM_PID needs a long, not a pid_t, I think.