src/video


Log

Author Commit Date CI Message
Cacodemon345 b592e78f 2021-09-25T12:55:41 wayland: Expose xdg_toplevel to SysWM
Sam Lantinga 477fcf52 2021-09-24T10:49:46 Fixed whitespace
Sam Lantinga db68af80 2021-09-24T10:49:44 Reduce the likelyhood that the mouse will hover over the taskbar or toast notification while in relative mode, which causes a mouse leave event. This will still happen occasionally as the mouse is whipped around, if there is a window overlapping the game window, but it should happen less often now. This could even happen with the original code that warped the mouse every frame, so this should be a good compromise where we don't warp the mouse continously and we still keep the mouse in the safe area of the game window. Note that notifications can be any size, so the safe area may need to be adjusted or even dynamically defined via a hint.
Ethan Lee 7ed415d2 2021-09-23T14:07:38 wayland: Reuse KeySymToUcs4 to replicate X11 keymap behavior
Ethan Lee 1a4e2e5e 2021-09-23T14:31:54 wayland: For text, ignore key events when Ctrl is held Fixes #4695
Ryan C. Gordon 0aff42a1 2021-09-23T00:02:44 egl: Group data fields before function pointers in SDL_EGL_VideoData.
Ryan C. Gordon 0ad4956c 2021-09-23T00:00:46 egl: explicitly call eglBindAPI during SDL_GL_MakeCurrent. The EGL API binding must be specified per-thread, per the docs. Fixes #1820.
Ryan C. Gordon 31477160 2021-09-22T09:27:41 egl: make an int into an SDL_bool.
Sam Lantinga 287571fb 2021-09-22T17:40:57 Limit effect of in_title_click and focus_click_pending to only blocking cursor warping; without this all relative mouse motion was getting ignored when a window was activated via a mouse button
Ethan Lee 9b74623b 2021-09-22T13:52:36 wayland: Woops, forgot to assign cursor theme size...
Ethan Lee 8e54698a 2021-09-22T13:26:44 wayland: Add support for high-DPI cursors
Sam Lantinga 345c161f 2021-09-22T09:06:45 Fixed some accidental uses of external C runtime functions
Sam Lantinga 5d455cab 2021-09-21T18:15:11 Don't process raw input when the window is being dragged or clicked on.
Sam Lantinga 0fd54f91 2021-09-21T18:15:11 Fixed using a tablet with raw input relative motion Tested with a Wacom Cintiq Pro 16"
Sam Lantinga 8fee82d1 2021-09-21T18:15:09 Improve relative motion handling over RDP CR and research: @danielj
Ryan C. Gordon 478f9eed 2021-09-20T10:20:04 x11: Don't include X11/extensions/extutil.h We don't use it, it was a leftover from 1.2, I think, and it doesn't exist on Solaris, so this should hopefully fix the build there. This also means we don't need the configure/cmake checks for SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY, so that was removed also. Fixes #1666.
Ivan Epifanov 8d1e0ca3 2021-09-16T12:48:39 Vita: add support for disabling 'screensaver' (screen dimming and suspend)
Zach Reedy 2a8938f2 2021-09-15T12:40:22 Fixed: Whitespace being striped from the end of IME strings incorrectly + Regression with SDL_SetTextInputRect (#4752) * Fixed: Whitespace being striped from the end of IME strings incorrectly * Fixed: Google IME Candidate Window not placing correctly * Why are PostBuild events stored in the vcxproj and not a user file? * Revert SDL.vcxproj properly... * Remove whitespace as per code review * Fix Werror=declaration-after-statement error in code
Ivan Epifanov ce177049 2021-09-12T09:34:41 Vita: Allow completely skipping pvr init to override apphint from app
Ivan Epifanov b2504b5d 2021-09-11T20:08:03 Fix typos
Jaylon Gowie e4556594 2021-09-10T21:13:51 Simplify Backspace and Enter
Jaylon Gowie f162d9ee 2021-09-10T21:02:22 Fix Indentation
Jaylon Gowie 058c4d36 2021-09-10T20:55:49 Add envvar to disable touchpads independently
Jaylon Gowie 4435543d 2021-09-10T20:01:40 Add PVR On Screen Keyboard Support
Ivan Epifanov 10d3df44 2021-09-09T12:46:28 Vita: fix copyright dates
Ivan Epifanov 2a836860 2021-09-09T12:36:40 Fix default path
Ivan Epifanov 134dd468 2021-08-16T19:08:12 Add pvr gles/gles2 context support
Zach Reedy 6f972052 2021-08-30T12:21:05 Added: Support for showing the IME Candidate Window on Windows
Rokas Kupstys 515b7e93 2021-08-27T17:02:07 Fix horizontal wheel scroll direction of X11.
Lee Salzman 9fae8f70 2021-08-29T15:33:58 Treat empty SDL_VIDEODRIVER var to check all video drivers.
Sylvain 1fe9ad04 2021-08-27T14:09:47 SDL_ConvertSurface: add an intermediate variable to remove static analysis false positive (see bug #4600)
Vanfanel b1e492d1 2021-08-25T19:31:47 Search for an appropiate plane instead of simply using the first one.
Eric Engestrom 23ffa3d9 2021-08-25T21:31:07 Update SDL's copy of the EGL headers from Khronos
Ethan Lee 524964f9 2021-08-14T12:09:13 Add SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY
Eric Engestrom 5113fedf 2021-08-02T23:01:12 video/wayland: use EGL_EXT_present_opaque when available
Ryan C. Gordon d5fe9c30 2021-08-24T14:18:47 x11: Log a warning if we decide to use XVidMode. Reference issue #1782.
Ozkan Sezer ccb06296 2021-08-19T03:15:02 SDL_windowsevents.c: fix build against older SDKs.
Aleksey Rybalkin 402b86f2 2021-08-15T14:41:56 waylandevents: prevent segfault if xkb compose table is not found this can happen e.g. on pure wayland system where there is no X11 locales for xkbcommon to find.
Jānis Rūcis 454943cf 2021-04-11T16:44:48 emscripten: Don't flag window fullscreen on external requests Also, the condition was always true.
Joseph Kogut 55af8dca 2019-02-27T14:16:37 emscripten: use emscripten_set_window_title api
Joseph Kogut d8baad7e 2019-02-27T14:15:40 emscripten: use emscripten_get_screen_size api
Charlie Birks abc04270 2020-04-15T15:22:39 emscripten: Fix framebuffer array creation optimisation
Charlie Birks b4f11a36 2020-04-15T14:48:52 emscripten: Drop commented out code from the dummy driver
David Gow fbc36490 2021-08-14T22:29:05 Use the new SDL_clamp() macro where sensible There were a few places throughout the SDL code where values were clamped using SDL_min() and SDL_max(). Now that we have an SDL_clamp() macro, use this instead.
Sam Lantinga 91a55a02 2021-08-13T23:59:39 Relative mouse motion is delivered to the window with keyboard focus This was the original intent (note SDL_UpdateWindowGrab() in SDL_OnWindowFocusGained() and SDL_OnWindowFocusLost()) and fixes a bug where relative motion unexpectedly stops if the task bar is covering the bottom of the game window and the mouse happens to move over it while relative mode is enabled. Another alternative would be to confine the mouse when relative mode is enabled, but that generates mouse motion which would need to be ignored, and it's possible for the user moving the mouse to combine with the mouse moving into the confined area so you can't easily tell whether to ignore the mouse motion. See https://github.com/libsdl-org/SDL/issues/4165 for a case where this is problematic.
Sam Lantinga 4d9efcb5 2021-08-13T11:52:25 Fixed flag test for boolean correctness
Sam Lantinga b28ed028 2021-08-13T11:39:41 Don't warp the mouse for relative mode when the window doesn't have focus
Sam Lantinga 629e9f82 2021-08-13T11:06:43 Fixed return value of SDL_GetGrabbedWindow() when we have an internal grab because of mouse relative mode
Sam Lantinga 6aa1498b 2021-08-13T11:03:19 This assert wasn't correct, we set the internal grab for mouse relative mode as well.
Simon McVittie 25cd749a 2021-08-12T15:12:04 x11: Don't change mode if we are already in the correct mode If we are already in the desired mode, changing it is a no-op at best, and harmful at worst: on Xwayland, it sometimes happens that we disable the crtc and cannot re-enable it. Resolves: https://github.com/libsdl-org/SDL/issues/4630 Signed-off-by: Simon McVittie <smcv@collabora.com>
Andrei Alexeyev 68ca35c3 2021-08-11T21:40:46 wayland: fix memleak in output listener
Ethan Lee ae7ee2a5 2021-08-11T09:59:43 wayland: Ignore stateless/sizeless configs when starting in fullscreen mode
Sam Lantinga cb1e20b0 2021-08-10T17:50:17 Added KMOD_SCROLL to track the scroll lock state Fixes https://github.com/libsdl-org/SDL/issues/4566
Sam Lantinga 016b02f2 2021-08-10T12:16:55 Fixed build, C89 doesn't allow non-constant static initializers
Ozkan Sezer 77c8d111 2021-08-10T20:55:50 configuration updates for dlopen: - cmake, configure (CheckDLOPEN): --enable-sdl-dlopen is now history.. detach the dl api discovery from SDL_LOADSO_DLOPEN functionality. define HAVE_DLOPEN. also define DYNAPI_NEEDS_DLOPEN (CheckDLOPEN is called only for relevant platforms.) - update SDL_config.in and SDL_config.cmake accordingly. - SDL_dynapi.h: set SDL_DYNAMIC_API to 0 if DYNAPI_NEEDS_DLOPEN is defined, but HAVE_DLOPEN is not. - pthread/SDL_systhread.c: conditionalize dl api use to HAVE_DLOPEN - SDL_x11opengl.c, SDL_DirectFB_opengl.c, SDL_naclopengles.c: rely on HAVE_DLOPEN, not SDL_LOADSO_DLOPEN. - SDL_config_android.h, SDL_config_iphoneos.h, SDL_config_macosx.h, SDL_config_pandora.h, and SDL_config_wiz.h: define HAVE_DLOPEN. Closes: https://github.com/libsdl-org/SDL/pull/4351
hgs3 cb0fd05e 2021-08-07T22:41:54 Adding a clarifying comment in case a programmer unfamiliar with UTF-16 and UTF-32's relationship chances upon the code.
Henry G. Stratmann III 34701129 2021-08-07T20:51:49 Optimizing the implementation.
Henry G. Stratmann III 712e0d1f 2021-08-07T16:23:15 Fixing WM_CHAR event handling for Unicode characters outside the Basic Multilingual Plane.
Sam Lantinga fcfd19db 2021-08-10T12:02:17 Added support for SDL_RENDERER_PRESENTVSYNC to the software renderer This fixes https://github.com/libsdl-org/SDL/issues/4612
Sebastian Krzyszkowiak b3a989d0 2021-08-10T13:08:27 video: Fix false positives in driver name comparison Without this change, driver names don't get matched correctly; for example "x" can get matched with "x11" since it only checks whether the string matches up to the length of the requested driver name.
Cameron Gutman 6ae227d0 2021-08-08T23:27:08 x11/wayland: fix screensaver suspension via D-Bus b08b1bde introduced a subtle bug. Despite not using D-Bus types directly, the code used the SDL_USE_LIBDBUS definition set by SDL_dbus.h to conditionally compile calls SDL_DBus_ScreensaverTickle() and SDL_DBus_ScreensaverInhibit(). As a result, it still compiled without SDL_dbus.h included, but screensaver suspension silently failed to work. The D-Bus stuff could probably use some tweaks to be harder to accidentally break, but for now just restore the header includes.
Sebastian Krzyszkowiak 2e6dac87 2021-08-09T01:47:42 wayland: Add a hint to allow disabling libdecor use Useful for testing xdg-shell path with compositors like Weston.
Cameron Gutman 092a20d9 2021-08-08T16:47:34 wayland: Avoid busy waiting for vsync
Ethan Lee 7be970db 2021-08-06T19:51:27 wayland: Avoid setting floating width/height when re-entering fullscreen
Sam Lantinga a91ab883 2021-08-06T12:28:03 Fixed building on Windows with cmake, ninja, and clang
Ethan Lee 10979d37 2021-08-05T12:42:03 wayland: Always assume configure is wrong for non-resizable windows. Configure events from compositors have an extremely annoying habit of giving us completely bogus sizes, from all sorts of places. Thankfully, the protocol gives us the ability to completely ignore the width/height and just stick with what we know, so for all windows that are not meant to be resized, pretend we never even got the width/height at all, the compositor is required to respect our dimensions whether they match configure's suggestion or not.
Sam Lantinga 88674b4a 2021-08-04T13:17:35 Fixed build
Sam Lantinga c14813a8 2021-08-04T13:00:14 Fixed spacing
Sam Lantinga 3cad447e 2021-08-04T12:57:51 Only update the window size if setting the display mode succeeded
Daniel Gibson 0eb6f791 2021-05-21T13:48:14 SDL_SetWindowDisplayMode(): If already fullscreen, adjust window size Otherwise only the display resolution is changed, but the SDL window size (and for example the window-surface size) aren't adjusted accordingly and thus don't fill the whole screen. See #3313
Daniel Gibson 72d81285 2021-05-19T18:47:56 Improve SDL_CreateWindow() fullscreen support on Windows .. and maybe other platforms as well (though X11 was not affected)? The issue was that passing a higher resolution than the current desktop resolution to SDL_CreateWindow() with SDL_WINDOW_FULLSCREEN didn't switch to that resolution (even though it did switch to lower resolutions). When creating a fullscreen window, window->fullscreen wasn't even set at all (only zeroed out), setting it only happened if the user explicitly called SDL_SetWindowDisplayMode(). So without that, SDL_CreateWindow() -> SDL_UpdateFullscreenMode() -> SDL_GetWindowDisplayMode() used the resolution from window->windowed.w/h which were limited to the desktop size due to some weird combination of WIN_AdjustWindowRectWithStyle() and WIN_WindowProc() being called after a call to SetWindowPos(). fixes #3313
Cameron Gutman b08b1bde 2021-08-03T22:50:58 linux: remove d-bus lazy init dead code Lazy init in X11/Wayland is dead code since dbdbae4
Ryan C. Gordon 7e88e772 2021-08-04T02:30:47 winrt: Fixed incorrect code in a Windows Phone #ifdef.
Ethan Lee 32f909f7 2021-08-03T13:30:57 wayland: Remove redundant waylanddyn.h includes. All files including waylanddyn.h already include waylandvideo.h first.
Ethan Lee 124405a0 2021-08-03T13:17:19 wayland: Fix building without Vulkan support
Ryan C. Gordon 350ca0f9 2021-08-03T04:57:53 winrt: Don't register orientation hint callback in startup code. SDL_AddHintCallback() uses SDL_malloc(), which means this would run before main(), so the app wouldn't be able to supply its own replacement SDL_malloc() implementation in time. This code was moved to under SDL_Init. Since the hint callback already makes efforts to not override the app manifest's orientation settings, this is safe to move until after pre-main() startup. Fixes #4449.
Ethan Lee 7082fb04 2021-08-02T22:42:28 wayland: Only dispatch on fullscreen set when the window is visible. Fixes hang-on-startup described in #4572.
Ethan Lee 0f5b8a99 2021-08-02T19:48:31 wayland: For libdecor, dispatch immediately after setting fullscreen Reference: #4578
Ethan Lee 4562da62 2021-08-02T16:40:56 wayland: Make libdecor configure match xdg_toplevel
Ethan Lee 1fb1aa19 2021-08-02T12:57:28 wayland: Keep the fullscreen check for maximize/restore events
Ethan Lee 584673a5 2021-08-02T12:51:23 wayland: Don't ignore configs for non-fullscreen, non-resizable windows. This was causing configure events to not inform SDL of window size changes, even when they were based on resizes that we fully expected. The result was fullscreen->windowed not working at all, because it would retain the desktop resolution instead of reverting to the floating size that it had before moving to fullscreen mode. Fixes Super Hexagon fullscreen toggling.
Sebastian Krzyszkowiak 25067298 2021-08-02T08:15:10 wayland: Flush in SetWindowFullscreen The flush has been removed in e5f9fae034df8ca305241c5a666e7702fcf9958f. Unfortunately, even though ideally the flush shouldn't be necessary, our resize sequence isn't... well, perfect, and removing that flush causes tons of troubles. We're also still flushing in other paths where the window size can be changed by the compositor and where we may potentially have to obey that change, like in Wayland_MaximizeWindow. This also removes the hack introduced in 7f261d3b7667978ced93a4fdc6aec2380df3d87f, which introduces problems with protocol violations and seems to not be necessary when flushing.
Sebastian Krzyszkowiak ea28187c 2021-08-02T08:07:23 wayland: Hack surface resize into compliance with set_window_geometry We have issues with correct resize sequence and happen to commit old-sized buffers even after configure event for the new size has been already acknowledged. While the reason for that stays unknown, let's at least workaround the problem by faking window geometry into expected size. This does not fix visual glitch on e.g. fullscreen toggling, but having a split-second glitch is still a much better outcome than being terminated by the compositor for protocol violation.
Sebastian Krzyszkowiak b5210cac 2021-08-02T13:47:32 wayland: Initialize floating size at window creation This allows the windowed size to be restored for windows initially created already in non-floating state.
Ethan Lee dab33844 2021-08-02T11:58:47 wayland: Fix a warning in handle_configure_xdg_toplevel
Ethan Lee 754aa2d3 2021-08-02T11:55:02 Mostly revert cfcdfb7be9f5c97a51ddef9ad3677a604856266b. This was causing window changes to completely break, resulting in broken decorations and bizarre frame timing, I don't know what exactly it's doing but it's not good. Kept the libdecor_frame_is_floating logic, at least.
Ethan Lee 8803589f 2021-08-02T12:05:06 wayland: Avoid redundant SetWindowBordered for libdecor
Sebastian Krzyszkowiak b4c4060a 2021-08-02T04:52:25 wayland: Clean up Wayland_HandlePendingResize Commit 871c11191bfc7214061a3da37c112522a102ddf5 removed delayed resize handling, but it left the whole structure untouched that now became unnecessary. To help with code clarity, get rid of the structure where pending resize state used to be stored and pass all the data directly to Wayland_HandlePendingResize (now renamed to Wayland_HandleResize, since it's not "pending" anymore but applied immediately)
Sebastian Krzyszkowiak 9bb24ad0 2021-08-02T05:49:35 wayland: Always call Wayland_SetWindowBordered when showing the window Otherwise our windows have no window decoration on compositors that support xdg-decoration-unstable-v1, but default to client-side mode. Contrary to what the comment was stating, there is nothing in the protocol that would make redundant calls to zxdg_toplevel_decoration_v1::set_mode problematic.
Christian Rauch cfcdfb7b 2021-08-01T18:14:53 libdecor: use same fullscreen/maximised restore logic as for xdg-toplevel
Christian Rauch 42452f8c 2021-08-01T13:51:30 wayland: store and restore floating states Some Wayland compositors send (0,0) as "suggested" configure event sizes to indicate that the client has to decide on its own which sizes to used. This is commonly done when restoring from maximised, fullscreen or tiles states to fullscreen. We now store the last known floating states in a new set of variables and restore them when we receive such a (0,0) configure event.
Sebastian Krzyszkowiak 54aea244 2021-08-01T05:36:12 wayland: Disable key repeat when repeat rate equals 0 This fixes a crash on pressing keyboard button when compositor sends zero as repeat rate, indicating that key repeat should be disabled. From Wayland protocol spec: > Negative values for either rate or delay are illegal. A rate of zero > will disable any repeating (regardless of the value of delay).
Sam Lantinga b033cd0d 2021-07-31T16:01:48 Fixed XSync sequence to match other cases where we set the X11 error handler
Ryan C. Gordon 4c7825f6 2021-07-31T18:27:14 x11: XSync while trying to catch XRRSetScreenSize error. Reference issue #4561
Ryan C. Gordon d0effadf 2021-07-31T15:56:30 x11: Don't let XRRSetScreenSize fire a BadMatch error. This is a workaround and not a proper fix, but this is possibly complicated, and possibly a corner case, so this will do for 2.0.16, if not the foreseeable future. Reference issue #4561
Ethan Lee e5594e66 2021-07-30T16:03:01 wayland: Prefer our SSD implementation if available
Ethan Lee 71897cc1 2021-07-30T15:51:43 wayland: Always trigger a resize when handling a configure event. When we removed the OpenGL resize workaround it introduced a problem for fullscreen windows in particular: When leaving fullscreen we tried to send a resize event, but UpdateFullscreenMode would send a SIZE_CHANGED immediately after, deleting our resize event and causing the following configure event's resize to be ignored. This timing issue resulted in fullscreen windows not being resized at all when becoming a floating window. By always forcing resize events from configure events, we ensure that RESIZED always makes it through. SetWindowSize-type changes should be unaffected as they do not fire configure events.
Ethan Lee c20ab7da 2021-07-30T00:22:50 wayland: Fix GetWindowWMInfo for <2.0.15
Cameron Gutman 6f684f67 2021-07-29T18:20:36 cocoa: Add keyboard grab support CGSSetGlobalHotKeyOperatingMode() is not a public API, so we will only compile this in if SDL_MAC_NO_SANDBOX=1 is defined during compilation.
Sam Lantinga 69518b9e 2021-07-29T17:09:24 Make sure we don't send a resize event while a window is being destroyed This fixes https://github.com/libsdl-org/SDL/issues/3669