aboutsummaryrefslogtreecommitdiff
path: root/backends
AgeCommit message (Collapse)Author
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-12SDL: Fix DoubleBufferSDLMixerManager doubling audio latencyColin Snover
If it turns out that everything that had previously been fixed by this manager is broken by this change, everything that had been fixed probably could have been fixed by just increasing the audio buffer size in SdlMixerManager. :\
2017-09-12SDL: Reduce audio playback latencyColin Snover
The previous default buffer size of 4096 samples for 44kHz mixer would add up to 93ms of audio latency, which is fine for early adventure games, but this is significantly more latency than is acceptable for games with full motion video. For these games, the latency needs to be kept within roughly +15ms and -45ms of video frame presentation to avoid lip sync problems. With this change, the default audio buffer size is calculated to be 1024 samples at 44kHz (which happens to match what DOSBox uses). There is a possibility that the reduced latency may cause issues that did not previously exist with things like the MT-32 emulator, where a larger buffer size allowed for a larger window where high-complexity synthesis that could not be generated in realtime could be balanced out by low-complexity synthesis that could be generated faster than realtime. In this case, rather than increasing the system mixer buffer size again, please move the MT-32 emulator into its own thread and give it its own larger ring buffer into which it can generate more sample data in advance, independently from the rest of the audio system. For other systems where this buffer size reduction might cause a problem with audio drop-outs, a new audio_buffer_size configuration option has been added to allow users to tweak the audio buffer size to match their machine's ability to generate audio samples. Fixes Trac#10033. Also improves playback of samples in SCI that were programmed to restart across several consecutive frames, relying on lower audio latency in the original engine for this to not sound bad, like the hopping sound at the start of chapter 1 of KQ7, and the sound of turning on the power in the digger train in the Lighthouse volcano.
2017-09-12GUI: Remove mostly-broken audio output sample rate controlColin Snover
Removing this GUI control was suggested as far back as 2011 at <http://lists.scummvm.org/pipermail/scummvm-devel/2011-November/010416.html>. There were no objections, but it was never removed. When working on audio latency bugs, I independently rediscovered that the GUI option was broken: the per-game options would *never* work, and the option would not take effect until ScummVM was restarted because there is no API for interacting with the backend audio mixer. So now, it is finally gone. Primarily for the sake of future troubleshooting, configurability of the audio sample frequency within SdlMixerManager is maintained for the moment, but now users will need to edit their ScummVM configuration file manually to change it.
2017-09-12SDL: Fix compilation on PSP2Colin Snover
2017-09-12SDL: List supported 32bpp pixel formats when using SDL2Colin Snover
_hwscreen is always initialized to 16bpp so the supported 32bpp pixel formats would never be put into the list of supported pixel formats, making it useless for engines to query for usable 32bpp pixel formats. This patch changes things so that the native desktop pixel format is at the top of the supported formats list, and all pixel formats <= the default desktop pixel format will now show up in the list of supported formats. ("Supported" is somewhat of a misnomer here since there is no hardware querying beyond checking the default desktop pixel format. SDL generally accepts a wide variety of pixel formats and tries to convert them to whatever the hardware supports.)
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-03SDL: Fix unsafe sprintf usageColin Snover
Translation strings come from external data sources and can cause a stack buffer overflow here just by accidentally (or maliciously) being too long.
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-11NETWORKING: Fix warningEugene Sandulenko
2017-08-11NETWORKING: Fix data type cast in comparison. char is usually signedEugene Sandulenko
2017-08-11BACKENDS: SURFACESDL: Add missing break statementEugene Sandulenko
2017-08-06JANITORIAL: Silence some more GCC 7 fall through warningsTorbjörn Andersson
I think these are the last one that were already flagged as being deliberate.
2017-08-05OPENGL: Always clear the whole backbufferBastien Bouclet
Previously we were clearing the whole backbuffer for 3 frames after a window size change, and then only clearing the game area. This assumes the OpenGL driver uses at most 3 render buffer and uses them in sequential order. This does not seem to be the case on Linux when using an Intel integrated GPU. Instead we now clear the whole backbuffer on each frame to make sure there are no leftovers remaining on the screen. All semi-recent GPUs should have hardware clear anyway so this should not impact negatively performance. Possibly fixes #10025.
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-17NETWORKING: fix missing SIOCGIFCONF for Haiku (#973)Schrijvers Luc
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-05-21BACKENDS: Compress screenshots using PNG if availableColin Snover
Closes gh-948.
2017-05-08OPENGL: Don't update the cursor's texture when the cursor is invisibleBastien Bouclet
Updating the cursor's texture is not necessary if it is not going to be drawn. Fixes glDrawArrays sometimes failing due to using a framebuffer with an incomplete color attachment. In SCI32 games, the framebuffer is incomplete because the engine does not define pixel data for the cursor.
2017-04-29CLOUD: Fix compilation with old curl vesionsThierry Crozat
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: Improve debug and warning messages when saving screenshotsThierry Crozat
In particular this adds a warning when failing to save a screenshot in OpenGL mode (there was already one in SurfaceSDL mode).
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-24SDL: Use dynamic cast instead of C cast to get screenshot pathThierry Crozat
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-21SDL: Respect OS setting for wheel scroll direction on SDL 2.0.4+Thierry Crozat
The setting was already respected on SDL < 2.0.4 (such as SDL1). If the OS inverts the scrolling direction, this is reflected on the sign of the y value of the SDL event. Since version 2.0.4 the SDL event also had a flag to indicate if the direction is flipped and we were using it to change back the y sign. That means the OS scrolling direction setting was not respected. With this commit we now have a consistent behaviour with all SDL versions (the OS scroll direction setting is respected). If our wheel events are used for something other than scrolling however, we might want to get the actually wheel move direction (i.e. use a Common::EVENT_WHEELDOWN when moving the wheel down even if the OS scroll setting is to flip it). In such a case we might want to revert this change and instead add an additional flag to the event so that we know the scroll direction should be flipped and use it in places where the event is used for scrolling.
2017-03-06PSP2: remove date from executable namersn8887
2017-03-06SDL: Fix trying to init non-supported shaders (#917)rsn8887
2017-03-05BACKENDS: Fix const'ness which led to warningsEugene Sandulenko