Commit graph

76 commits

Author SHA1 Message Date
Cameron Cawley
26cd7d44e2
SDL: Implement lockMouse() in the 2D graphics managers (#2517) 2020-10-13 21:31:10 +02:00
Paweł Kołodziejski
35b9cccbde ALL: Merge ResidualVM 2020-10-09 19:44:13 +02:00
Pawel Kolodziejski
d8f2040dba ALL: Drop setupScreen API, use new initGraphics3d from engine API.
Enabled system API for begin/end gfx transactions, initSize, setGraphicsMode.
Function setGraphicsMode will use optional params to trigger 3d rendering
and switch to proper SDL Gfx manager.
2020-10-02 19:14:19 +02:00
Pawel Kolodziejski
6aa7cf6025 BACKENDS: Made code less different in SDL platform backend 2020-09-29 15:08:16 +02:00
Pawel Kolodziejski
11b9f5d81c BACKENDS: More renames in GFX backends 2020-09-25 10:35:26 +02:00
Pawel Kolodziejski
15a759370a ALL: Synced with ScummVM - rev: bdbbcd81ae 2020-09-12 19:38:50 +02:00
SupSuper
fa615bc52f BACKENDS: Fix inconsistent usage of const modifier
Fixes warnings from mismatching method signatures between parent and child managers
2020-05-30 06:49:09 +01:00
Pawel Kolodziejski
6e02b9d5d6 SDL: Based on PR #1624 and more sync with ScummVM 2020-05-12 23:46:03 +02:00
Pawel Kolodziejski
bd32585c45 ALL: Added missing files, don not enable docker plugin 2020-05-09 20:58:00 +02:00
Pawel Kolodziejski
b586571900 ALL: synced with ScummVM commit 09bf38c120 2020-05-09 20:05:54 +02:00
Bastien Bouclet
13fbdb935a KEYMAPPER: Use custom backend actions for the SDL graphics keymap 2020-01-29 08:51:29 +01:00
Bastien Bouclet
be49fc4b9a SDL: Add a keymap for the graphics manager 2020-01-29 08:51:29 +01:00
Cameron Cawley
f2b9f7bb76 BACKENDS: Remove the Windows CE port 2019-11-17 22:33:56 +01:00
Cameron Cawley
177d709909 OPENGL: Implement high DPI support on Android (#1895)
* OPENGL: Implement high DPI support on Android

* PSP2: Fix build
2019-11-01 13:39:46 +02:00
Orgad Shaneh
64a4d498ce Fix mouse going out of bounds in fullscreen
The coordinates were translated, but this was done on a copy
instead of overwriting the original object.
2019-04-01 21:12:33 +03:00
Filippos Karapetis
769cf5492c SDL: Wrap the full screen toggle code into a separate function 2019-03-10 18:32:13 +02:00
Cameron Cawley
f426ba6c36 SDL: Move fullscreen and screenshot event handling to SdlGraphicsManager (#1522) 2019-03-10 18:25:25 +02:00
Bastien Bouclet
53759fe53a ALL: Sync with ScummVM - rev. 2586ca2345 2018-07-31 21:09:37 +02:00
Bastien Bouclet
3ec01653c3 ALL: Merge from ScummVM rev 3a933138ce 2017-12-06 21:41:03 +01: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
da0a8db704 BACKENDS: Also hide mouse cursor outside game area when an engine has hidden the cursor
The only reason we show the system cursor outside the game area is
to show users where their mouse is when the window is resized and
the mouse is outside the game area. If the game cannot be
interacted with, then the mouse also does not need to be shown in
the black areas.
2017-10-15 13:24:20 -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
b53020f704 BACKENDS: Fix some comment typos 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
Pawel Kolodziejski
4fe80cd669 ALL: synced with ScummVM 2015-04-19 07:43:34 +02:00
Johannes Schickel
627d766325 SDL: Add basic abstraction class for the SDL window. 2015-02-16 01:03:29 +01:00
Johannes Schickel
8530997fff SDL: Add experimental support for SDL2.
This is based upon skristiansson's change set to make ScummVM work with SDL2.
2015-01-25 20:23:25 +01:00
Johannes Schickel
d97889cea7 SDL: Cleanup graphics manager switching a bit. 2015-01-25 19:26:15 +01:00
Johannes Schickel
3a2db0135d SDL: Refactor WM specific functionality into SdlGraphicsManager. 2015-01-25 18:57:38 +01:00
Pawel Kolodziejski
8759900b6a ALL: synced with ScummVM 2014-04-05 18:18:42 +02:00
Johannes Schickel
63304ee9ec SDL: Make GPL headers consistent in themselves. 2014-02-18 02:39:38 +01:00
Pawel Kolodziejski
9098dfe9a2 ALL: sync with scummvm 2014-01-25 22:16:57 +01:00
Pawel Kolodziejski
b22d441a00 ALL: synced with scummvm 2013-12-08 13:25:24 +01:00
Johannes Schickel
cfa6b1b4ae SDL: Further small cleanup related to manager switching. 2013-10-24 00:09:17 +02:00
Johannes Schickel
ea6d38d5f3 SDL: Make activateManager/deactivateManager SdlGraphicsManager specific.
We can do this now that we can use virtual inheritance and dynamic_cast
because we enabled RTTI.
2013-10-24 00:06:32 +02:00
Johannes Schickel
281672e171 SDL: Let SdlGraphicsManager inherit from GraphicsManager. 2013-10-24 00:03:09 +02:00
Johannes Schickel
6e46e9dfaf SDL: Clean up graphics manager switching slighty.
Sadly this also requires us to extend GraphicsManager for this SDL specific
feature. However, since that's only used in the SDL backend and Tizen it
should be fine for now...
2013-10-23 22:58:34 +02:00
Pawe Koodziejski
a5479cfe83 sync with scummvm 2012-01-06 22:56:21 +01:00
Johannes Schickel
dd0ad3cba4 SDL: Fix typo. 2011-08-18 23:18:20 +02:00
Johannes Schickel
dedc74abfa SDL: Add a new base class for graphics managers utilizing SDL. 2011-08-09 00:03:10 +02:00
Pawel Kolodziejski
5bf4f9316b sync with scummvm dated 03 july 2011 2011-07-20 06:58:19 +02:00
Johannes Schickel
1c21232416 SDL: Rename SdlGraphicsManager to SurfaceSdlGraphicsManager to reflect its purpose.
Hopefully I catched all uses of the old name in our ports...
2011-06-19 20:10:21 +02:00
Pawel Kolodziejski
7329a5d164 ALL: sync with scummvm 2011-06-09 11:17:15 +02:00
Max Horn
ce32745d9c BACKENDS: Replace OSystem::disableCursorPalette by setFeatureState calls 2011-06-04 11:55:56 +02:00
Pawel Kolodziejski
356c9c8c07 sync with scummvm 2011-05-18 23:33:39 +02:00
strangerke
69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Pawel Kolodziejski
6be453780f synced with scummvm 2011-05-01 17:49:40 +02:00
Ori Avtalion
9414d7a6e2 JANITORIAL: Reduce header dependencies in shared code
Some backends may break as I only compiled SDL
2011-04-28 15:08:58 +03:00