Commit Graph

6455 Commits

Author SHA1 Message Date
Colin Snover
a5bc89102e ALL: Remove obsolete register keyword
The register keyword was deprecated from the C++11 standard,
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4193.html#809>,
and removed from the C++17 standard,
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4340>, so
cannot exist in a well-formed C++17 program.

It has never done anything in GCC
<https://gcc.gnu.org/ml/gcc/2010-05/msg00113.html>
and because of the way it is specified in the standard, it is “as
meaningful as whitespace”
<http://www.drdobbs.com/keywords-that-arent-or-comments-by-anoth/184403859>.

The one remaining use of the register keyword is in the DS backend,
where it is used to create a local register variable using the
non-standard GCC Extended Asm feature.

Closes gh-1079.
2017-12-03 20:27:42 -06:00
Colin Snover
20b2c1b7e1 SDL: Fix memory corruption when switching to/from 32-bit cursors
When a 32-bit cursor has the same size as an 8- or 16-bit cursor,
the mouse surfaces were not being regenerated even though the
32-bit cursors have a different memory requirement. This lead to
memory corruption as an inappropriate surface would be used for
the other type of cursor.

The shoe-horned 32-bit cursor support is clearly showing its
scrappy nature here and probably ought to be revisited in the
future if the SurfaceSdl graphics manager sticks around.

Fixes Trac#10349, Trac#10350, Trac#10351.
2017-12-03 12:33:05 -06:00
rsn8887
c78fa86860 PSP2: fix clipping and display quality for odd resolutions (Phantasmagoria) 2017-12-02 13:00:22 -06:00
rsn8887
d73437c293 PSP2: fix odd resolutions on PSP2, fixes Phantasmagoria 2017-12-02 11:53:23 -06:00
Colin Snover
5c855a0a5a BACKENDS: Fix shake position getting stuck
If a game is doing a screen shake (for example, DOTT when the
stereo is on), and the user does an RTL, the screen shake offset
may get stuck if the engine does not reset it on shutdown. To
avoid this in all cases, just always reset the screen shake
whenever the graphics manager is told to switch to a new graphics
mode.
2017-12-01 19:43:12 -06:00
Tarek Soliman
d06323141c MAEMO: Update debian/changelog 2017-11-29 21:12:18 -06:00
Thierry Crozat
cd7e6cd31c RELEASE: This is 2.1.0git 2017-11-30 00:13:10 +00:00
Bastien Bouclet
779b97ee3f SDL: Don't use the window size hint for fullscreen
Prevents the opengl backend from changing mode when entering fullscreen
for games with a window size hint.

Fixes #10335. Closes gh-1074.
2017-11-29 16:49:32 -06:00
Cameron Cawley
4d2e1d16b1 RISCOS: Improve detection of absolute paths 2017-11-28 22:23:58 +00:00
Cameron Cawley
509b12de65 RISCOS: Fix using filenames with spaces 2017-11-28 22:23:58 +00:00
Bastien Bouclet
6eb9a48bbd EVENTS: Delay initializing the virtual keyboard
The virtual keyboard requires the backend to be fully initialized
because it needs the display size.

Fixes #10338.
2017-11-28 05:49:45 +01:00
Colin Snover
c278677d07 SDL: Store fake mouse warp event in virtual coordinates
Normally, notifyMousePosition converts real mouse events into the
virtual coordinate system, but events only get sent through
notifyMousePosition if they are real events from SDL since that
method also decides if the real mouse is inside the content area or
not. As such, these fake events need to be pre-converted to virtual
coordinates or else the wrong values are sent through to the engine
when a scaler or AR correction is in use.
2017-11-27 20:39:21 -06:00
Colin Snover
fbefda8a2f ANDROID: Fix illegal-in-C++11 narrowing conversions 2017-11-25 20:19:01 -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
5ed745f532
Merge pull request #1063 from bgK/keyboard-repeat
SDL2: Improve handling of keyboard repeat events
2017-11-24 19:37:58 +01:00
Colin Snover
c13defd661 RELEASE: 1.10 will henceforth be known as 2.0
General consensus on the ML was that people wanted to do this.
http://lists.scummvm.org/pipermail/scummvm-devel/2017-November/012008.html
2017-11-21 15:26:52 -06:00
Bastien Bouclet
bc5ac6440c EVENTS: Fix one ms error in repeat event generation time check 2017-11-19 20:07:51 +01: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
Bastien Bouclet
7d811d356e EVENTS: Allow disabling repeat event generation 2017-11-19 16:12:50 +01:00
Bastien Bouclet
7539a77eeb EVENTS: Move key repeat handling to its own method 2017-11-19 16:12:50 +01:00
Bastien Bouclet
8beb519c5e EVENTS: Rename synthetic to kbdRepeat 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
Colin Snover
9bbf7f3f36 SDL: Don't pass null pointers to SDL_DestroyTexture/SDL_DestroyRenderer
SDL does not like this and will raise an assertion when built with
internal SDL assertions turned on. With internal assertions turned
off, it will still call SDL_SetError any time a null pointer is
passed, though it will not raise an assertion or crash.
2017-11-15 11:36:14 -06:00
Bastien Bouclet
1dbe3ad18e SDL: Fix assertion when using 4bpp cursors with a key color
Myst ME uses such cursors.
2017-11-11 13:26:22 +01: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
Thierry Crozat
1d1f898c01 SDL: Preserve mouse position when switching between OpenGL and SurfaceSDL backends
Since those GraphcisManager initialize the cursor position to (0,0) when
created the cursor was jumping to the top left corner and then moving
back to its initial position as soon as the mouse was moved. Now it
stays at its initial position.

There are still some issues with it when changing between OpenGL and
SurfaceSDL at the same time as toggling fullscreen. But it is not worse
than before.
2017-11-11 00:15:13 +00:00
Thierry Crozat
b93fefebe8 SDL: Fix display artefacts with transparent OSD message
If we do not update the area below the message, it is just blitted on top
of itself again and again and gets progressively less transparent. It also
causes artefacts when the mouse pass below the OSD message.
2017-11-11 00:11:50 +00:00
Patrik Dahlstrom
bf85ad820c SDL: fix various OSD message artifacts
On the OpenPandora handheld, the OSD message would not render unless you
moved the cursor in the area where it was supposed to show.
Additionally, the OSD message was not transparent like in v1.8.
This commit fixes both these issues.
2017-11-10 19:56:28 +00:00
Colin Snover
8e8ec3900c SDL: Get correct default graphics mode ID when queried
Fixes Trac#10312.
2017-11-07 21:34:42 -06:00
D G Turner
872c5ee7c5 LINUX: Fix Header for major/minor macros, thus removing warnings.
Warnings are as follows:
"In the GNU C Library, "minor" is defined by <sys/sysmacros.h>.
For historical compatibility, it is currently defined by
<sys/types.h> as well, but we plan toremove this soon.
To use "minor", include <sys/sysmacros.h> directly. If you did
not intend to use a system-defined macro "minor", you should
undefine it after including <sys/types.h>"
2017-11-07 20:18:22 +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
Tarek Soliman
2fea095fc7 SDL: Fix SDL1 cursor position when using a touchscreen
I noticed that in Maemo the cursor was offset after the SDL refactoring
in de2bbe3b97

In Maemo when entering fullscreen, ScummVM receives a SDL_VIDEORESIZE
event with the native touchscreen resolution rather than the current
window size. This causes a call to notifyResize.

Before that refactoring, notifyResize did nothing (in SDL1).
Now it calls handleResize but doesn't actually set a new video mode.
This messes up the coordinate mapping, causing an overcorrection for
the cursor position.
2017-10-19 17:51:01 -05:00
Colin Snover
752f4e4f04 SDL: Fix missing scaled cursors in SDL 2.0.4 on Windows
This may be a problem with SDL 2.0.4 generally, not just on
Windows, but it doesn't really matter much since it can't be
broken on *any* platform.
2017-10-17 18:41:34 -05:00
Colin Snover
4307156e1c SDL: Fix 32bpp cursor scaling in SDL1
The SDL1 loop is not very optimal. Unfortunately all our existing
scalers only work in 16bpp and I don't have time to fix that right
now, so this is fine.
2017-10-16 00:27:34 -05:00
Colin Snover
4466738885 SDL: Fix scaled 32bpp cursor rendering 2017-10-15 21:38:58 -05:00
Colin Snover
ef44cc55ee DINGUX: Really constify getFeatureState 2017-10-15 16:54:24 -05:00
Colin Snover
7aef79c421 DINGUX: Fix missing const on hasFeature/getFeatureState implementation 2017-10-15 16:41:04 -05:00
Colin Snover
1f8eeb5920 DINGUX: Replace usage of old SurfaceSdlGraphicsManager APIs 2017-10-15 16:32:58 -05:00
Colin Snover
4263a78aa0 GPH: Replace usage of old SurfaceSdlGraphicsManager APIs 2017-10-15 16:18:10 -05:00
Colin Snover
ea2fa9093d PSP: Improve const-correctness 2017-10-15 16:11:47 -05:00
Colin Snover
2ef10faa1e PSP2: Replace usage of old SurfaceSdlGraphicsManager APIs 2017-10-15 16:00:00 -05:00
Colin Snover
e308605b2f OPENPANDORA: Remove duplicated loadGFXMode code 2017-10-15 15:52:11 -05:00
Colin Snover
bda253b1ac BACKENDS: Constify PaletteManager::grabPalette implementations 2017-10-15 13:47:19 -05:00
Colin Snover
4757c24c68 BACKENDS: Fix up graphics manager ports with const & override where appropriate 2017-10-15 13:24:21 -05:00
Colin Snover
f6ab0e5c10 SDL: Allow window size to be reset whenever launcher is visible
This ensures the window gets resized properly when a user changes
the scaler options in the GUI. Simply unlocking the window size on
a call to setGraphicsMode is not good enough, because the scaler
mode can be changed by games during mode switches, and we don't
want to reset the window size in that case.
2017-10-15 13:24:21 -05:00
Colin Snover
8b112f57a9 SDL: Support 32bpp cursor rendering
32bpp cursor scaling is not available, but this should be fine as
many of the software scalers are not designed to work with >16bpp
data in any case.

This change also includes some minor cleanup of unnecessary #ifdefs
around code that works equally well with or without USE_RGB_COLOR,
to simplify the implementation.
2017-10-15 13:24:21 -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
cd538ffffa BACKENDS: Do not send mouse events to games occurring outside the game draw rect 2017-10-15 13:24:21 -05:00
Colin Snover
319ab07fe0 SDL: Minor code cleanup to declare variables at point of first use 2017-10-15 13:24:20 -05:00
Colin Snover
5d8cf6ba42 BACKENDS: Fix GraphicsManager handling of empty cursors
The SDL graphics manager was just ignoring calls from CursorMan to
set the cursor to a blank cursor, which meant engines that did not
immediately send a cursor to CursorMan at startup would still show
the launcher's cursor (usually with a broken palette).

The OpenGL graphics manager would try to generate and draw an
invalid cursor surface when receiving an empty cursor.
2017-10-15 13:24:20 -05:00