|
157c3f80
|
2021-05-21T09:45:08
|
|
[SDL] Minimize number of system calls when handling WM_INPUT raw input messages.
Details:
Currently doing 4 system calls per WM_INPUT message, which can cause the thread handling the message loop to be swapped out several times:
* GetProp - to get window data from the window handle
* GetRawInputData - to retrieve the raw input data
* 2 calls to GetMessageExtraInfo - to ignore synthetic mouse events generated for touchscreens
In this change:
* Replaced GetProp by iterating the list of windows maintained by SDL (with a fallback to GetProp). Note that this will affect all messages and not just WM_INPUT
* only calling GetMessageExtraInfo if a touchscreen has been detected
Fix for https://jira.valve.org/browse/CSGO-4855
@saml
|
|
be5356af
|
2021-05-14T14:44:13
|
|
winrt: Fix support for multiple simultaneous mouse button presses
|
|
62a562de
|
2021-05-12T23:37:18
|
|
X11: use x11sym loaded functions (see bug #3978)
|
|
531d83bf
|
2021-05-12T23:13:48
|
|
X11: allow using touchscreen, while pointer is grabbed (see bug #3978)
|
|
e1db4b82
|
2021-05-11T14:08:17
|
|
egl: Don't crash if we failed halfway through SDL_CreateWindow.
|
|
f2f451a5
|
2021-05-10T13:29:54
|
|
wayland: Call SetWindowBordered at the end of ShowWindow
|
|
b3b4677e
|
2021-04-07T11:17:52
|
|
(X11) Set _NET_WM_NAME properly, fixes Unicode window titles
Removes deprecated code meant to support extremely ancient, pre-UTF-8
versions of Xorg. Uses new xlib API's for doing this same thing.
Closes #4288.
|
|
c5dd9964
|
2021-04-07T12:14:16
|
|
Copied X11 error handler code from SDL_x11opengl.c
Avoids needing to malloc to hold the error string.
|
|
efbb6ff9
|
2021-05-10T12:42:28
|
|
wayland: Create the server decorations after the toplevel has been configured
|
|
9dc97afa
|
2021-05-08T12:39:50
|
|
cocoa: Report an error if SDL_SetClipboardText() isn't using UTF-8 encoding.
Fixes #4110.
|
|
889cebb7
|
2021-05-05T14:08:30
|
|
Wayland touch inputs send normalized coords
Resolves #4361
|
|
31637dde
|
2021-05-04T14:59:29
|
|
Generic check for desktop GL and EGL on Linux systems
|
|
c69fde34
|
2021-05-02T16:43:01
|
|
wayland: Maximize/Restore should set the relevant window flags.
Also, Maximize should be ignored for fixed-size windows.
|
|
006378b9
|
2021-05-02T18:30:32
|
|
fix NULL frame_callback access
|
|
424bbaec
|
2021-05-01T18:53:12
|
|
wayland: destroy frame callback when window is destroyed
|
|
20928550
|
2021-05-01T09:00:24
|
|
wayland: Guard surface_frame_listener for OpenGL, document why it exists
|
|
3d47ddc4
|
2021-05-01T08:57:37
|
|
wayland: Use refresh_rate to calculate max_wait in SwapWindow
|
|
7b284dbb
|
2021-04-30T22:01:48
|
|
EglChooseConfig: choose an accelerated configuration
- especially because we can be promoted to true color 888
make sure we don't select a potentially software implementation
- hopefully fix bug #1482 (EGL ChooseConfig selects software renderer on Android)
|
|
9161f951
|
2021-04-27T02:25:57
|
|
egl: Reject attempts to set negative swap intervals
|
|
c54c16d3
|
2021-04-30T13:19:36
|
|
wayland: don't hang in SDL_GL_SwapBuffers if the compositor is ghosting us.
If you hide a window on Mutter, for example, the compositor never requests
new frames, which will cause Mesa to block forever in eglSwapBuffers to
satisfy the swap interval.
We now always set the swap interval to 0 and manage this ourselves, handing
the frame to Wayland when it requests a new one, and timing out at 10fps just
to keep apps moving if the compositor wants no frames at all.
My understanding is that other protocols are coming that might improve upon
this solution, but for now it solves the total hang.
Fixes #4335.
|
|
227021b6
|
2021-04-30T11:25:20
|
|
SDL_windowsmessagebox.c (MessageBoxDialogProc): fix calling convention.
|
|
a74f888f
|
2021-04-29T22:25:00
|
|
Fixed bug #4337 - compilation of 'SDL_vulkan_utils' fails with 'VK_ERROR_INCOMPATIBLE_VERSION_KHR' undeclared
|
|
1f3df900
|
2021-04-28T23:40:26
|
|
Error missing 'flags' initialization (see bug #2881)
|
|
c93e3b36
|
2021-04-28T10:43:28
|
|
Fixed bug #2881 - SDL_RLEsurface may encode RGB888 if it has no color key (Thanks Simon Hug)
To encode with BLEND mode, it needs a valid alpha channel
|
|
8527c583
|
2021-04-27T01:36:23
|
|
cocoa: Fix recreated windows that are both borderless and resizable.
These would accidentally get a titlebar because the "borderless" style mask
is zero but the resizable attribute adds a bit. I assume this happens because
you used to need window decoration to resize a window in macOS, but this
changed in later releases.
This only caused problems when recreating a window (you had an
SDL_WINDOW_OPENGL window and tried to create a Metal SDL_Renderer on it, etc).
Fixes #4324.
|
|
2fdbae22
|
2021-04-26T18:43:28
|
|
cocoa: Remove mouse event tap.
It doesn't appear to work anymore, and was disabled by default anyhow, since
the needed APIs are forbidden on the Mac App Store.
A better solution to lock the mouse to the window on macOS would still be
welcome. CGAssociateMouseAndMouseCursorPosition() works fine for relative
mouse mode, this was just a question of SDL_SetWindowGrab(). As it stands
now, a grabbed mouse can briefly break out of the window, causing varying
degrees of chaos.
|
|
1f482174
|
2021-04-25T12:44:35
|
|
x11: Mark backing_store as NotUseful when creating windows.
This can give some performance boost, and save some resources, as there's no
reason to keep a copy of an SDL window's contents on the server: most SDL
apps are redrawing completely every frame, and the API allows for expose
events to tell an app a redraw is needed anyhow.
(And compositors are free to ignore this setting if it makes sense to do so,
according to the Xlib docs.)
Reference Issue #3776.
|
|
9c063468
|
2021-04-24T19:47:10
|
|
x11: call XSync before XSetInputFocus during SDL_ShowWindow.
This only happens when using a non-NET_WM window manager, as we might try to
set the focus before the window is mapped.
Fixes #3949.
|
|
cf05a5eb
|
2021-04-22T21:40:57
|
|
eglChooseConfig: only add EGL_DEPTH_SIZE if non 0
and fix static / shadowed variables warnings for dump configs
|
|
98a966d1
|
2021-04-22T18:06:17
|
|
Android: don't need to set the SurfaceHolder format from java code
It's already set with ANativeWindow_setGeometry, and eventually set/changed also by eglCreateWindowSurface.
- avoid issues with older device where SurfaceView cycle create/changed/destroy appears broken:
calling create/changed/changed, and leading to "deuqueBuffer failed at server side, error: -19", with black screen.
- re-read the format after egl window surface is created, to report the correct one (sometimes, changed from RGBA8888 to RGB24)
|
|
8e3ec34d
|
2021-04-20T12:40:40
|
|
wayland: Refactor toplevel mapping, implement HideWindow
|
|
0838f53d
|
2021-04-21T11:41:08
|
|
Implement SDL_SetWindowAlwaysOnTop for X11
|
|
a5825576
|
2021-04-21T13:39:31
|
|
Fix error handling of wayland message box
Zenity return a small integer on success which may be the same as EXIT_FAILURE. Use a bigger integer for error reporting from child process.
|
|
12dd412b
|
2021-04-21T13:31:15
|
|
Fix icon of wayland message box
Also add some comments and silence a warning.
Co-authored-by: Ethan Lee <flibitijibibo@gmail.com>
|
|
d0cf3b75
|
2021-04-20T18:26:02
|
|
Return correct button id
|
|
1fd95c53
|
2021-04-20T18:15:09
|
|
Disable pango markup in wayland massage box
Zenity support pango markup, add --no-markup to disable it.
|
|
0cd0e9ba
|
2021-04-20T17:49:21
|
|
Reimplement wayland message box function with execvp.
Previous version used 'popen' which required to sanitize user provided text. Not
sanitizing text could cause failure if user provided text included a " or command
injection with `cmd`.
|
|
99ef03b9
|
2021-04-21T01:22:22
|
|
KMSDRM: Only use OpenBSD-specific defines on pre-6.9 releases
|
|
a0a5da5d
|
2021-04-19T07:13:38
|
|
Add SDL_SetWindowAlwaysOnTop()
|
|
6be9c009
|
2021-04-20T13:46:25
|
|
Android: prevent error EGL_BAD_DISPLAY while getting egl version without display
There is an error "E libEGL : validate_display:91 error 3008 (EGL_BAD_DISPLAY)"
that occurs when calling "eglQueryString(display, EGL_VERSION)", with EGL_NO_DISPLAY.
Khronos says "EGL_BAD_DISPLAY is generated if display is not an EGL display connection, unless display is EGL_NO_DISPLAY and name is EGL_EXTENSIONS."
but this was added in SDL with "EGL 1.5 allows querying for client version"
( https://github.com/libsdl-org/SDL/commit/56363ebf6124b345e1cfbd14fb6c0e654837910c )
In fact:
- it actually doesn't work on Android that has 1.5 egl client
- it works on desktop X11 (using SDL_VIDEO_X11_FORCE_EGL=1)
The commit moves the version call where it's used, eg inside the "if (platform) {"
and checks that "eglGetPlatformDisplay" has been correctly loaded.
|
|
de6d2902
|
2021-04-19T21:48:11
|
|
Fix keymap updating for X11 backend
|
|
509228c4
|
2021-04-18T22:26:27
|
|
wayland: Implement GetDisplayDPI
|
|
fcbfe33c
|
2021-04-18T09:45:22
|
|
wayland: Implement SetWindowModalFor
|
|
213bfc19
|
2021-04-18T09:36:54
|
|
wayland: Implement RestoreWindow for xdg/zxdg
|
|
0f518002
|
2021-04-18T09:33:57
|
|
wayland: Removed unused GetDisplayModes/SetDisplayMode functions
|
|
46df195b
|
2021-04-18T09:33:06
|
|
wayland: Implement GetDisplayBounds
|
|
ed24c345
|
2021-04-16T21:35:50
|
|
wayland: Implement basic window move events via wl_surface_listener.
This unearthed an unspeakably large amount of bugs in the wl_output enumerator,
notably the fact that the wl_output user pointer was to temporary memory!
This was "fixed" in e862856, and was then pointed out as a leak in 4183211,
which was undone in d9ba204. The busted fix was correct that the malloc was an
issue, but wrong about _why_; SDL_AddVideoDisplay copies by value and does not
reuse the pointer, so generally you want your VideoDisplay to be on the stack,
but of course the callbacks don't allow that, so a malloc was a workaround. But
we can do better and just host our temporary display inside WaylandOutputData
because that will be persistent while also not leaking.
Wait, wasn't I talking about move events? Right, that: wl_surface_listener does
at least give us the ability to know what monitor we're on, even though we have
no idea where we are on the monitor. All we need to do is check the wl_output
against the display list and then push a move event that both indicates the
correct display while also not being _too_ much of a lie (but enough of a lie
to where our event doesn't get discarded as "undefined" or whatever). The index
check for the video display is what spawned the great nightmare you see before
you; aside from the bugfix this is actually a really basic patch.
|
|
b4f89c56
|
2021-04-15T21:16:10
|
|
AAudio: add aaudio pause/resume function to android events loop
|
|
5c78df9c
|
2021-04-14T00:56:50
|
|
Support key composing (i.e. dead keys) in Wayland driver (#4296)
Based on an old patch by chw from the old Bugzilla issue tracker.
Authored-by: chw
Co-authored-by: Sam Lantinga <slouken@libsdl.org>
|
|
f88d91d5
|
2021-04-12T23:47:23
|
|
wayland: Minor whitespace fix
|
|
d785dab5
|
2021-04-12T23:37:53
|
|
wayland: Add unscaled resolutions to the display mode list
|
|
b0178fe5
|
2021-04-14T00:52:53
|
|
KMSDRM: Report correct window position to the application
|
|
dfcd5fbc
|
2021-04-08T21:57:58
|
|
wayland: Set the keymap in keyboard_handle_modifiers
|
|
9ef0b97c
|
2021-04-12T11:25:44
|
|
Changes to macOS event handler to better interact with the running app
- Only focus a new window when one closes if the window that was closed was an SDL window
- If the application already has a key window set that is not an SDL window, don't replace it when the application is activated
- Only register the URL event handler when SDLAppDelegate is going to be set as the applications app delegate. This is to
be consistent with previous behavior that would only register the handler in -[SDLAppDelegate applicationDidFinishLaunching:]
and allows the running app to opt out of the behavior by setting its own app delegate.
- The URL event handler is now removed if it was set on SDLAppDelegate dealloc
|
|
c59d4dcd
|
2021-04-08T15:32:33
|
|
wayland: Dramatically lower the timeout when reading/writing pipes
|
|
cf124963
|
2021-04-08T15:29:54
|
|
wayland: Fall back to clipboard source data if offer came up empty
|
|
282c0524
|
2021-04-08T14:59:04
|
|
wayland: Another strlen->SDL_strlen
|
|
bec133d7
|
2021-04-08T14:16:32
|
|
wayland: Use SDL_strlen instead of strlen
|
|
e28d9785
|
2021-04-08T14:16:21
|
|
wayland: Minor whitespace cleanup in clipboard.c
|
|
875f839d
|
2021-04-08T14:14:46
|
|
wayland: A bunch of clipboard safety fixes.
Also removed Wayland_get_data_device because it was a pointless getter function.
|
|
7510245a
|
2021-04-08T14:08:35
|
|
wayland: Create the data_device only after both device_manager and input exist.
There is no guarantee on what order the Wayland interfaces will come in, but the
callbacks were assuming that wl_data_device_manager would could before wl_seat.
This would cause certain desktops to not have any data_device to work with,
meaning certain features like the clipboard would silently no-op.
|
|
89b62093
|
2021-04-01T14:17:53
|
|
Fix race condition that can lead to ENTER/LEAVE window events never firing
On windows, when toggling the state of RelativeMode rapidly, there is a
high chance that SDL_WINDOWEVENT_ENTER / SDL_WINDOWEVENT_LEAVE events
will stop firing indefinitely.
This aims to resolve that shortcoming by ensuring mouse focus state is
correctly updated via WM_MOUSELEAVE events arriving via the windows
event hook.
|
|
6fd37194
|
2021-04-07T16:03:41
|
|
wayland: Fix leaked zxdg_decoration_manager
|
|
f6a09ef1
|
2021-04-07T16:16:23
|
|
wayland: Drop support for kwin specific decoration management
KWin has supported the shared and formalised zxdg_decoration since
Plasma 5.16 which came out mid 2019.
Whilst it made sense to support them both for a while, it should not be
needed for future SDL releases.
|
|
a92cca1a
|
2021-04-07T16:44:10
|
|
wayland: Use the window's display to get wl_output rather than fullscreen_mode.
Because Wayland only supports FULLSCREEN_DESKTOP, fullscreen_mode never gets
assigned at all, meaning driverdata is always NULL! Depending on what the
compositor does this can lead to dramatically different results. GNOME was fine
without this, but Plasma would trip an event that unintentionally unset the
fullscreen mode and caused the game to fire a configure event _every frame_,
and of course the configure would send the fullscreen_mode output which was
still empty. The fix is to just use the SDL_VideoDisplay directly, which will
always have a valid wl_output.
|
|
c7e29a9e
|
2021-04-06T18:10:40
|
|
wayland: Fix toggling fullscreen with fixed-size windows
|
|
e97cfe4a
|
2021-04-06T23:56:10
|
|
KMSDRM_Vulkan_CreateSurface(): fixed pointer-cast warning on 32 bit
Closes: https://github.com/libsdl-org/SDL/issues/4284
|
|
8fa2ce56
|
2021-04-03T22:47:47
|
|
WinRT: Rename Interface ID symbols
Rename locally-defined Interface ID symbols to avoid conflict with
locally linked dxgi library. Prefixed with `SDL_` to match with
other references in render_d3d11 or wasapi.
|
|
3dbc4cf2
|
2021-03-30T17:49:51
|
|
Fix compilation error for Windows SDK 8.1+
https://docs.microsoft.com/en-us/windows/win32/api/shellscalingapi/ne-shellscalingapi-monitor_dpi_type
|
|
413a2306
|
2021-04-04T10:47:06
|
|
NULL passed to strcmp in Wayland_ShowMessageBox
|
|
354cabd4
|
2021-04-03T18:15:50
|
|
egl: favor truecolor configurations.
If app requested <= 16 color depth and there is a 24-bit config available,
favor that. This fixes things that quietly expect to get truecolor output
but don't request it (...like SDL's render api...) and things that are
probably requesting 16-bit color as a fallback but expecting reasonable
systems to give them full depth.
Specifically, this fixes Life is Strange on Wayland, which uses the latter
approach, and anything using SDL_Render on Wayland, which uses the former.
Fixes #4056.
Fixes #4132.
|
|
4abe3446
|
2021-04-03T10:10:58
|
|
SDL_EGL_ChooseConfig: cleanups and minor optimizations.
- Move an immutable condition out of a for loop.
- Add a break statement to that loop when we find what we're looking for.
- Add an assert to make sure we don't overflow a buffer.
- Wrap a single-statement if block in braces.
- Adjust some whitespace.
|
|
dbdbae44
|
2021-04-02T14:35:11
|
|
linux: (de)initialize d-bus at init and quit.
Previously we had different subsystems quitting it, in conflict, and risked
multiple threads racing to init it at the same time.
Fixes #3643.
|
|
fa818834
|
2021-03-30T13:25:09
|
|
[KMSDRM] Fake refresh rate precision on Vulkan display mode creation.
|
|
942aa7bd
|
2021-03-30T11:41:26
|
|
[KMSDRM] No need to use an SDL_VideoDisplay pointer to access display index.
|
|
033c0abb
|
2021-03-27T14:04:00
|
|
Use dispatch_async for -[NSOpenGLContext update]. Fixes #3680
|
|
eeee7308
|
2021-03-29T16:57:03
|
|
wayland: Implement IME support.
Note that this is purely to make it possible to enter text that requires
composition - for example, before this commit Kanji input didn't work at all.
The big problem this still has is that we need the window position, and this is
still not implemented. Once we have this information we can do the equivalent
of XTranslateCoordinates to put the rectangle where we want it.
|
|
733b3278
|
2021-03-29T19:22:26
|
|
[KMSDRM] Minor Vulkan code adjustments regarding pointers and display index.
|
|
9de7eaf9
|
2021-03-28T01:30:26
|
|
[KMSDRM] Change error message.
|
|
1ec60a38
|
2021-03-27T23:52:51
|
|
[KMSDRM] Remove unnecessary space.
|
|
c13c3c37
|
2021-03-27T22:50:18
|
|
[KMSDRM] For Vulkan, use a mode with the same exact size as the window, if possible, or create a new one.
|
|
07ba13b7
|
2021-03-26T00:40:05
|
|
wayland: Pass --no-wrap to Zenity.
There seems to be a bug where it can wrap the text based on the minimum possible
window size, which can be worked around with --no-wrap. This technically uncaps
the width entirely, but this isn't wildly different from what other backends do.
|
|
54719a9d
|
2021-03-25T23:58:12
|
|
wayland: Assign output_len in ShowMessageBox
|
|
27b74d33
|
2021-03-25T23:25:34
|
|
Implement Wayland_ShowMessageBox using Zenity
|
|
5262b52d
|
2021-03-25T23:56:56
|
|
SDL_kmsdrmvideo.c: define EGL_PLATFORM_GBM_MESA if it's missing.
Fixes: https://github.com/libsdl-org/SDL/issues/4232
|
|
5ac6bd54
|
2021-03-24T02:54:36
|
|
[KMSDRM] Ask for videomode on the correct display when creating a window.
|
|
c12f46b1
|
2021-03-22T19:03:25
|
|
[KMSDRM] Fix segmentation fault
Deference the windata pointer *after* checking that it's non-NULL.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
|
|
100166d7
|
2021-03-22T18:00:41
|
|
[KMSDRM] Improve cursor management.
|
|
cf7eef37
|
2021-03-19T04:25:40
|
|
[KMSDRM] Better error handling: no more segfaults on window creation failure.
|
|
4acd1dca
|
2021-03-18T14:04:38
|
|
[KMSDRM] Improve the way to test if last window is being destroyed.
|
|
8638674a
|
2021-03-18T13:55:58
|
|
[KMSDRM] Correct comment typo.
|
|
82ff6045
|
2021-03-18T12:02:54
|
|
[KMSDRM] Unload GL/EGL libs and destroy GBM only when we are destroying the last window.
|
|
c35e7189
|
2021-03-18T11:47:23
|
|
[KMSDRM] All non-vulkan windows have to be marked as OPENGL, not only the first created one.
|
|
281a7bdb
|
2021-03-18T11:20:18
|
|
[KMSDRM] Make the gbm_init flag a viddata member to avoid GBM re-init when several displays are connected.
|
|
7d1b9c9f
|
2021-03-17T14:40:41
|
|
[KMSDRM] Remove unneeded function calls and improve comments for future reference.
|
|
d84df04f
|
2021-03-15T09:00:15
|
|
Merge commit '51345623e888d7bc4131cd8f015c339f757ea68a' into main
|
|
9996cecc
|
2021-03-15T05:26:46
|
|
Set ALT_OGL to libOpenGL.so.0 instead of libOpenGL.so.1
|
|
5f7eb88a
|
2021-03-14T22:36:20
|
|
Load libOpenGL.so.1 if libGL.so.1 is not found
|
|
72bcf546
|
2021-03-10T16:47:08
|
|
SDL: Updated patches for HAIKU
|
|
3d22731d
|
2021-03-11T20:10:07
|
|
Merge pull request #4175 from 1bsyl/br_blit_rgb555_to_rb1555
Fixed bug 3727 - Blit from RGB555 to ARGB1555
|