aboutsummaryrefslogtreecommitdiff
path: root/backends/platform
AgeCommit message (Collapse)Author
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-15PSP: Improve const-correctnessColin Snover
2017-10-15BACKENDS: Constify PaletteManager::grabPalette implementationsColin Snover
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-30IOS: Improve iOS 11 compatibilityVincent Bénony
2017-09-12OPENPANDORA: Remove unused includeThierry Crozat
The use of DoubleBufferSDLMixerManager in the OpenPandora backend was removed in commit b157269 but the include for it was left behind.
2017-09-12GPH: Remove unused includeThierry Crozat
The use of DoubleBufferSDLMixerManager in the GPH backend was removed in commit 3b6398c but the include for it was left behind.
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-10Revert "COMMON: Change way the Singleton instances are instantiated"Eugene Sandulenko
This reverts commit eefa72afa1978a9dea10f5b1833fcc8f58a3468e. With this patch ConfigManager is broken.
2017-07-10COMMON: Change way the Singleton instances are instantiatedThierry Crozat
This fixes tons of warnings with clang from a recent xcode version on macOS (and possibly other systems) complaining that an instantiation of _singleton is required but no definition is available.
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-06-25ANDROIDSDL: implemented checking and fixing sdcard pathlubomyr
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.
2017-04-24WINDOWS: Change location where screenshot are savedPala
This fixes bug #9701: WINDOWS: Flow of taking screenshots on Windows is broken
2017-04-18JANITORIAL: Remove superfluous semicolonsTorbjörn Andersson
2017-03-06PSP2: remove date from executable namersn8887
2017-03-04PSP2: Add Playstation Vita (PSP2) supportcpasjuste
2017-02-24Merge pull request #908 from rsn8887/upstreamEugene Sandulenko
SDL: Fix erratic analog pointer + control options
2017-02-22SDL: Fix erratic analog pointer + control optionsrsn8887
Fixes erratic speeds in analog pointer motion Implemented option to set analog/keyboard pointer speed and control the analog joystick deadzone. The deadzone option appears only if the build supports analog joystick (via JOY_ANALOG define)
2017-02-22Merge pull request #909 from lubomyr/masterEugene Sandulenko
ANDROIDSDL: changed filename in assets file with scummvm-data for replace old data files
2017-02-22ANDROIDSDL: changed filename in asset file with scummvm-data for replacing ↵lubomyr
old data-files
2017-02-21Merge pull request #904 from AReim1982/DevKitPPC-R28Eugene Sandulenko
WII: Fix compiler warnings