Commit graph

609 commits

Author SHA1 Message Date
Cameron Cawley
c52addd001 RISCOS: Use a variable for the application name 2018-07-23 09:36:46 +02:00
Cameron Cawley
c9f2091bc9 RISCOS: Convert documentation to RISCOS-LATIN1 when packaging 2018-06-29 16:45:26 +00:00
rsn8887
e5103a3e8b PSP2: enable additional memory 2018-06-14 23:18:52 -05:00
Cameron Cawley
ae8b5dc086 RISCOS: Add a script to open the README file based on the system territory 2018-06-15 01:15:52 +01:00
Cameron Cawley
478d7b2ee7 WIN32: Fix fallback in getSystemLanguage 2018-06-03 17:43:30 +01:00
Cameron Cawley
ada05fd726 WIN32: Move Windows-specific implementation of logMessage out of OSystem_SDL 2018-06-03 17:43:30 +01:00
Cameron Cawley
e1c83f8e87 WIN32: Move Windows-specific implementation of getSystemLanguage out of OSystem_SDL 2018-06-03 17:43:30 +01:00
Adrian Frühwirth
cee4d6b853 JANITORIAL: Fix trailing whitespace 2018-05-24 15:30:55 +02:00
Adrian Frühwirth
bc949250de JANITORIAL: Convert line endings from CRLF/mixed to LF 2018-05-24 15:30:55 +02:00
Thierry Crozat
e79fc3ac76 OSX: Handle encoding conversion for clipboard text 2018-04-29 21:47:10 +01:00
Thierry Crozat
0dae57ab2f SDL: Handle encoding conversion for clipboard text 2018-04-29 21:47:10 +01:00
Thierry Crozat
3fe0e3c38e OSYSTEM: Add API to copy text to clipboard
This has also been implemented for the SDL2 and macOS backends.
2018-04-29 21:47:10 +01:00
Cameron Cawley
668084c58a RISCOS: Package translated documentation 2018-04-07 09:27:08 +02:00
Colin Snover
f3f5088824 SDL: Do not try to replace FILE with an incompatible type
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-09 14:26:42 +01:00
rsn8887
86b1e74b28 PSP2: allow 'frontpanel_touchpad_mode=true' option in ScummVM.ini
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-02-08 00:19:41 -06:00
Cameron Cawley
8f8eb81b1b RISCOS: Don't list RISC OS as a POSIX platform 2018-01-26 13:18:18 +00:00
rsn8887
e214493f87 PSP2: Set Touchpad Mouse Mode option default to off 2018-01-24 20:09:45 -06:00
rsn8887
5551241c51 PSP2: More settings for touch (direct touch on/off, pointer speed) 2018-01-24 04:16:49 -06:00
Bastien Bouclet
3b8ffa0812 BACKENDS: Remove vkeybdpath override from some ports
DATA_PATH is now search when loading virtual keyboard files, the
overrides are no longer required.
2017-12-28 21:27:37 +01:00
rsn8887
dafadbc8c7 PSP2: Add controller config, remove joystick event handling 2017-12-26 21:11:05 +01:00
Bastien Bouclet
a86eae6323 SDL: Only enable joystick related features when joysticks are enabled
Fixes #9714.
2017-12-26 21:11:05 +01:00
Bastien Bouclet
ee4ff8ca08 SDL: Cleanup joystick deadzone handling 2017-12-26 21:11:04 +01:00
Bastien Bouclet
1fb748e974 SDL: Move the non analog joystick code to the Symbian port
Symbian was the only user of that code.
2017-12-26 21:11:04 +01:00
Thierry Crozat
4f1025378f BUILD: Check if posix_spawn is available in configure 2017-12-15 01:08:14 +00:00
Thierry Crozat
2926cd4a50 POSIX: Fix compilation with some old macOS SDKs 2017-12-14 23:37:20 +00:00
Colin Snover
008149e357 POSIX: Do not hang ScummVM when opening a browser
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-14 14:30:16 -06:00
Colin Snover
7aaac1dfba POSIX: Fix CVE-2017-17528 2017-12-14 14:30:11 -06:00
rsn8887
c78fa86860 PSP2: fix clipping and display quality for odd resolutions (Phantasmagoria) 2017-12-02 13:00:22 -06:00
Thierry Crozat
2d88a30803 Revert "SDL: Use RLE acceleration for SDL2 transparent surfaces"
This reverts commit 6b4195a542.
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-26 01:56:48 +00:00
Bastien Bouclet
8fc70ce37f SDL: Improve handling of SDL2 keyboard repeat events
- 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-19 16:12:50 +01:00
Colin Snover
d3a831644c SDL: Grab mouse when ScummVM is started in fullscreen mode 2017-11-17 12:01:35 -06:00
Thierry Crozat
6b4195a542 SDL: Use RLE acceleration for SDL2 transparent surfaces
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-11-11 00:18:57 +00:00
Colin Snover
3a95213905 SDL: Automatically grab mouse upon entering fullscreen
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-23 22:36:04 -05:00
Colin Snover
d1b77d4b68 BACKENDS: Fix missing mouse events when system cursor cannot be moved
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-15 13:24:21 -05:00
Colin Snover
de2bbe3b97 BACKENDS: Refactor OpenGL & SDL graphics backends
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-15 13:24:20 -05:00
Colin Snover
0ad03e492a SDL: Accept signed values for mouse cursor warping
This matches the other ScummVM and SDL APIs for mouse warp.
2017-10-15 13:24:20 -05:00
Colin Snover
6e157429b7 BACKENDS: Fix window sizing of games that switch between multiple resolutions 2017-10-07 12:30:29 -05:00
Colin Snover
ebe6c40a6a SDL: Do not reset window size when engines update rendering surface
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-07 12:30:29 -05:00
Cameron Cawley
51949bbc9e RISCOS: Add RISC OS filesystem 2017-10-01 20:19:42 +02:00
Thierry Crozat
3607b79d7d MACOSX: Remove mixer init from derived class for macosx backend
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-12 21:30:29 +01:00
Colin Snover
bcbd443359 SDL: Stop using double buffering mixer on macOS
This mixer type was added in
943b4c2036 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-12 11:35:51 -05:00
Colin Snover
b8f89a772e MACOS: Fix builds on case-sensitive filesystems 2017-09-10 23:30:25 -05:00
Colin Snover
6e2f18c498 MACOS: Fix warnings about undeclared selectors
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-10 22:17:16 -05:00
Colin Snover
56810b5598 MACOS: Fix deprecation warnings in macOS 10.12 2017-09-10 22:17:16 -05:00
Cameron Cawley
aba431ca9b RISCOS: Use double quotes in sed command 2017-09-03 10:40:07 +02:00
Cameron Cawley
0d1df59be1 RISCOS: Automatically calculate the correct WimpSlot size 2017-09-03 10:40:07 +02:00
Cameron Cawley
b9694a01db RISCOS: Use shorter filenames for config and log files 2017-09-03 10:40:07 +02:00
Cameron Cawley
0e7d9414a6 RISCOS: Correctly set executable extension 2017-09-03 10:40:07 +02:00
Cameron Cawley
7a00045df0 RISCOS: Add networking files to application 2017-09-03 10:40:07 +02:00
cameron
a11985c46d RISCOS: Add RISC OS support 2017-09-03 10:40:07 +02:00