aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/sdl
AgeCommit message (Collapse)Author
2018-02-09SDL: Do not try to replace FILE with an incompatible typeColin Snover
It’s questionable that the SDL backend code is trying so hard to maintain forbidden symbols at all since backend code is exactly where such things are allowed, and it is a game of whack-a-mole to keep system API changes from breaking this fragile system of symbol redefinitions. Probably this should all just get replaced with a FORBIDDEN_SYMBOL_ALLOW_ALL, but for the time being this at least gets builds working again on up-to-date msys2/mingw-w64 compilers. Fixes Trac#10405.
2018-02-08PSP2: allow 'frontpanel_touchpad_mode=true' option in ScummVM.inirsn8887
Can change option to 'true' manually in scummvm.ini to force front panel into indirect touchpad mode where the pointer doesn't jump to finger.
2018-01-26RISCOS: Don't list RISC OS as a POSIX platformCameron Cawley
2018-01-24PSP2: Set Touchpad Mouse Mode option default to offrsn8887
2018-01-24PSP2: More settings for touch (direct touch on/off, pointer speed)rsn8887
2017-12-28BACKENDS: Remove vkeybdpath override from some portsBastien Bouclet
DATA_PATH is now search when loading virtual keyboard files, the overrides are no longer required.
2017-12-26PSP2: Add controller config, remove joystick event handlingrsn8887
2017-12-26SDL: Only enable joystick related features when joysticks are enabledBastien Bouclet
Fixes #9714.
2017-12-26SDL: Cleanup joystick deadzone handlingBastien Bouclet
2017-12-26SDL: Move the non analog joystick code to the Symbian portBastien Bouclet
Symbian was the only user of that code.
2017-12-15BUILD: Check if posix_spawn is available in configureThierry Crozat
2017-12-14POSIX: Fix compilation with some old macOS SDKsThierry Crozat
2017-12-14POSIX: Do not hang ScummVM when opening a browserColin Snover
If the call used to open the browser does not return until the browser is closed, this would previously cause ScummVM to hang. Since we are using waitpid now, we can avoid hanging by telling waitpid to not block on a child which has not exited.
2017-12-14POSIX: Fix CVE-2017-17528Colin Snover
2017-12-02PSP2: fix clipping and display quality for odd resolutions (Phantasmagoria)rsn8887
2017-11-26Revert "SDL: Use RLE acceleration for SDL2 transparent surfaces"Thierry Crozat
This reverts commit 6b4195a542083c97f696c843b9823d578b018996. There seemed to be no clear benefit in using RLE for transparent surfaces, and there were a few reports that it might cause crashes on Windows. So to be on the safe side I prefer to revert this commit.
2017-11-19SDL: Improve handling of SDL2 keyboard repeat eventsBastien Bouclet
- Flag them as repeat events - Disable ScummVM's own repeat event generation This fixes keyboard repeat events not being flagged as such with SDL2, and complies with the user's operating system preferences regarding key repeat timings.
2017-11-17SDL: Grab mouse when ScummVM is started in fullscreen modeColin Snover
2017-11-11SDL: Use RLE acceleration for SDL2 transparent surfacesThierry Crozat
We were already doing it for SDL1.2, but with SDL2 the SDL_RLEACCEL is not passed to SDL and instead we need to call SDL_SetSurfaceRLE.
2017-10-23SDL: Automatically grab mouse upon entering fullscreenColin Snover
Folks are confused about the new behaviour where the mouse is not restricted to the game area in fullscreen, which is understandable. This changes mouseIsGrabbed to use SDL directly in order to avoid making changes to the user preference in the _inputGrabState. Otherwise we'd either clobber the user's previous windowed mouse grab preference, or require maintaining a second variable just to track the original state, when we can have SDL do that for us.
2017-10-15BACKENDS: Fix missing mouse events when system cursor cannot be movedColin Snover
Normally with SDL, a mouse motion event will be sent after the system mouse cursor has been moved by a call to SDL_WarpMouseInWindow, but if the system cursor cannot be moved (e.g. because the window does not have mouse focus), games still need to receive these mouse events so they can successfully update the mouse position internally. Otherwise, games continue to think the mouse is still in the original position and will continue to try to perform whatever action is associated with that mouse position. Refs Trac#9689.
2017-10-15BACKENDS: Refactor OpenGL & SDL graphics backendsColin Snover
This patch refactors the OpenGL and SDL graphics backends, primarily to unify window scaling and mouse handling, and to fix coordinate mapping between the ScummVM window and the virtual game screen when they have different aspect ratios. Unified code for these two backends has been moved to a new header-only WindowedGraphicsManager class, so named because it contains code for managing graphics managers that interact with a windowing system and render virtual screens within a larger physical content window. The biggest behavioral change here is with the coordinate system mapping: Previously, mouse offsets were converted by mapping the whole space within the window as input to the virtual game screen without maintaining aspect ratio. This was done to prevent 'stickiness' when the mouse cursor was within the window but outside of the virtual game screen, but it caused noticeable distortion of mouse movement speed on the axis with blank space. Instead of introducing mouse speed distortion to prevent stickiness, this patch changes coordinate transformation to show the system cursor when the mouse moves outside of the virtual game screen when mouse grab is off, or by holding the mouse inside the virtual game screen (instead of the entire window) when mouse grab is on. This patch also improves some other properties of the GraphicsManager/PaletteManager interfaces: * Nullipotent operations (getWidth, getHeight, etc.) of the PaletteManager/GraphicsManager interfaces are now const * Methods marked `virtual` but not inherited by any subclass have been de-virtualized * Extra unnecessary calculations of hardware height in SurfaceSdlGraphicsManager have been removed * Methods have been renamed where appropriate for clarity (setWindowSize -> handleResize, etc.) * C++11 support improved with `override` specifier added on overridden virtual methods in subclasses (primarily to avoid myself accidentally creating new methods in the subclasses by changing types/names during refactoring) Additional refactoring can and should be done at some point to continue to deduplicate code between the OpenGL and SDL backends. Since the primary goal here was to improve the coordinate mapping, full refactoring of these backends was not completed here.
2017-10-15SDL: Accept signed values for mouse cursor warpingColin Snover
This matches the other ScummVM and SDL APIs for mouse warp.
2017-10-07BACKENDS: Fix window sizing of games that switch between multiple resolutionsColin Snover
2017-10-07SDL: Do not reset window size when engines update rendering surfaceColin Snover
This change allows: * Engines to update their target rendering surface/size and pixel format with the backend multiple times during gameplay; * Users to resize the ScummVM window without having it reset size/position every time an engine updates its target surface format; * Conversions/scaling to continue to run efficiently in hardware, instead of requiring engines to pick their maximum possible output format once and upscale inefficiently in software; * The window to reset size once when an engine calls to set its initial output size, and to reset again once ScummVM returns to the launcher. This is relevant for at least SCI32 and DreamWeb engines, which perform graphics mode switches during games.
2017-10-01RISCOS: Add RISC OS filesystemCameron Cawley
2017-09-12MACOSX: Remove mixer init from derived class for macosx backendThierry Crozat
Since the macosx backend now does the same as the base SDL backend we can just let the base class do its stuff.
2017-09-12SDL: Stop using double buffering mixer on macOSColin Snover
This mixer type was added in 943b4c2036002454b276e0190dfc2c8919fb0cbf because "anything which produces sampled data with high latency (like the MT-32 emulator) will sound terribly", but as far as I can see (or reproduce), this mixer doesn't do anything that would solve that problem, except that it effectively doubles the size of the audio buffer so there's less chance of an underflow due to slower-than-realtime synthesis by the softsynth. But you don't need the overhead of a separate thread to do that, you just need to increase the buffer size.
2017-09-10MACOS: Fix builds on case-sensitive filesystemsColin Snover
2017-09-10MACOS: Fix warnings about undeclared selectorsColin Snover
When -Wundeclared-selector is enabled (recommended by Apple), the calls to the setBadgeLabel selector in MacOSXTaskbarManager are warned on because NSDockTile declarations are not included because they do not exist in macOS 10.4 and earlier. While I don't know that we are even supporting such old macOS versions these days, it is simple enough to fix this problem when compiling to modern macOS versions by conditionally including the necessary header.
2017-09-10MACOS: Fix deprecation warnings in macOS 10.12Colin Snover
2017-09-03RISCOS: Use double quotes in sed commandCameron Cawley
2017-09-03RISCOS: Automatically calculate the correct WimpSlot sizeCameron Cawley
2017-09-03RISCOS: Use shorter filenames for config and log filesCameron Cawley
2017-09-03RISCOS: Correctly set executable extensionCameron Cawley
2017-09-03RISCOS: Add networking files to applicationCameron Cawley
2017-09-03RISCOS: Add RISC OS supportcameron
2017-08-01Windows: Use GetUserDefaultUILanguage() instead of GetThreadLocale().Frank Richter
The thread locale concerns display options (e.g. date formatting) not the display language. There are typically, but not necessarily the same, as Windows allows them to be configured separately.
2017-07-29SDL: Make the window size when exiting fullscreen workaround macOS specificBastien Bouclet
The call to SDL_SetWindowSize works around a macOS specific SDL2 bug. Fixes the window not restoring to its previous position when exiting fullscreen on Linux/X11.
2017-07-27SDL: Make sure we get the correct window size with SDL2Thierry Crozat
When updating or recreating the window, if we changed the window size at the same time we also toggle between OpenGL and non OpenGL mode, or toggle fullscreen mode, we may have a pending SDL resize event with the wrong size. So we need to make sure to append another one with the correct size to end up with the correct size. This fixes bug #9971.
2017-07-06SDL: Fix compilation with SDL1.2Colin Snover
2017-07-06SDL: Only recreate SDL2 window when necessaryColin Snover
Destroying and recreating the SDL window whenever the video mode changes in SDL2 is not necessary and causes several problems: 1. In windowed mode, the game window shifts position; 2. In fullscreen mode in macOS, every time the window is recreated, it causes the OS to play its switch-to-fullscreen animation again and emit system alert noises; 3. The window content flickers; and 4. The engine loses events from the old destroyed window. This patch changes the SDL backend code to avoid destroying and recreating the SDL window when using SDL2, except when switching OpenGL modes, since there is no way to change the OpenGL feature of a window. There are still some outstanding issues with OpenGL where window size ends up getting reset even though the user has resized it; this will probably need to be addressed at some point in another patch. Thanks to @bgK and @criezy for their feedback which made this patch much better. Co-Authored-By: Bastien Bouclet <bastien.bouclet@gmail.com>
2017-05-21MACOSX: Fix flipped return value of openUrlColin Snover
2017-04-26MACOSX: Expand ~ in default screenshot pathThierry Crozat
When using SDL to save the screenshot, using a told results in an error.
2017-04-24WINDOWS: Fix warning under mingw-w64.Kirben
2017-04-24WINDOWS: Hopefully fix mingw compilation.Kirben
2017-04-24WIN32: Fix compilation of getScreenshotPath (missing parenthesis)Thierry Crozat
2017-04-24WIN32: Comment out code that gets the user My Pictures directoryThierry Crozat
This broke compilation on buildbot as ShlObj.h cannot be found. A developer that has access to Windows should take a look to properly fix this.
2017-04-24SDL: Allow specifying the screenshot directory in the config fileThierry Crozat
There is no GUI option to set the screenshot directory, but this allows power users to set it if they don't want to use the default.
2017-04-24MACOSX: Create screenshot on DesktopThierry Crozat
This is consistent with the OS shortcut (Crtl+Shift+3) to take a screenshot.