aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/sdl
AgeCommit message (Collapse)Author
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.
2017-04-24WINDOWS: Change location where screenshot are savedPala
This fixes bug #9701: WINDOWS: Flow of taking screenshots on Windows is broken
2017-03-06PSP2: remove date from executable namersn8887
2017-03-04PSP2: Add Playstation Vita (PSP2) supportcpasjuste
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)
2016-10-22SDL: Fix typosOri Avtalion
2016-10-09JANITORIAL: Remove more trailing spacesEugene Sandulenko
2016-09-13SDL: Add a fixme regarding the encoding of the string returned by ↵Bastien Bouclet
getTextFromClipboard
2016-09-13SDL: Plug a memory leak in OSystem_SDL::getTextFromClipboardBastien Bouclet
2016-09-10CLOUD: Move openUrl to OSystemThierry Crozat
2016-09-04SDL: Move mouse in SDL2 only when window has focus.Eugene Sandulenko
2016-09-04SDL: Do not forbid time.h symbols when FORBIDDEN_SYMBOL_EXCEPTION_time_h is ↵Thierry Crozat
defined This hopefully fixes a regression from 848c5c3.
2016-09-03Merge pull request #810 from tsoliman/sdl2-macportsThierry Crozat
SDL: Fix build with MacPorts SDL2
2016-09-03BUILD: Tie the SDL_net version to the SDL versionThierry Crozat
This means that when using SDL 1.2 we use SDL_net 1.2, but when using SDL 2 we now use SLD_net 2 as well. Both versions work properly and there is not code change needed in ScummVM. This change is because SDL_net depends on SDL, and using SDL_net 1.2 with SDL 2 means we can end up needing to link with both the SDL and SDL2 libraries.
2016-08-30OSX: Implement clipboard supportThierry Crozat
There was already an implementation using SDL2 in the SDL backend, but this way we have it available also when using the SDL 1.
2016-08-24ALL: Move Clipboard support to OSystemAlexander Tkachev
Commit adds kFeatureClipboardSupport. hasTextInClipboard() and getTextFromClipboard(). OSystem_SDL has this feature if SDL2 is used. EditableWidget and StorageWizardDialog use g_system to access clipboard now.
2016-08-24CLOUD: Init SDL_NetAlexander Tkachev
2016-08-24CLOUD: Make CloudManager singletonAlexander Tkachev
It's needed to ::destroy() it in main().
2016-08-24CLOUD: Add CurlJsonRequestAlexander Tkachev
Now we can do REST API request by creating CurlJsonRequest and waiting for it to call our callback. Passed pointer is Common::JSONValue. This commit also does some minor variable renaming fixes.
2016-08-24CLOUD: Add USE_CLOUD featureAlexander Tkachev
Adds USE_CLOUD in both configure and create_project.
2016-08-24CLOUD: Add Cloud::Manager and Cloud::StorageAlexander Tkachev
This commit introduces Common::CloudManager, which can be accessed from OSystem. The backend for this manager is Cloud::Manager (defined in backends/cloud/manager.h). It should load all users storages from configs and provide access to current Storage instance. For now it just creates a new one. Cloud::Storage (backends/cloud/storage.h) provides an API to interact with cloud storage, for example, create new directory or sync files. Right now it's not ready and has only two dummy methods: listDirectory() and syncSaves(). There is Cloud::Dropbox::DropboxStorage backend (backends/cloud/dropbox/dropboxstorage.h) for Cloud::Storage. Right now it implements both listDirectory() and syncSaves() with starting timer task and handling it by printing out some JSON examples.
2016-08-24CLOUD: Integrate CloudThread into OSystemAlexander Tkachev
Would be changed soon.