aboutsummaryrefslogtreecommitdiff
path: root/backends/events
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-15BACKENDS: Fix some comment typosColin Snover
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-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-04Merge pull request #915 from rsn8887/vitaEugene Sandulenko
PSP2: Add Playstation Vita support
2017-03-04PSP2: Add Playstation Vita (PSP2) supportcpasjuste
2017-03-01SDL: Always use sub-pixel joystick pointer resolutionrsn8887
2017-02-27SDL: fix pointer speed setting 8 (was too slow)rsn8887
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)
2017-02-21Merge pull request #905 from lubomyr/masterEugene Sandulenko
ANDROIDSDL: added tab Control in main Options menu for switching some features
2017-02-18SDL: increase resolution of slow analog pointer motionrsn8887
2017-02-18SDL: Cleanup, replaced _km.multiplier with #definersn8887
2017-02-18SDL: improved internal joystick event handlingrsn8887
2017-02-18SDL: slow analog ('modifier'+stick) made slowerrsn8887
2017-02-18ANDROIDSDL: code refactoring and optimizationlubomyr
2017-02-17SDL: More fixes to jerky analog joystick pointerrsn8887
For some engines such as Dreamweb that a previous fix did not apply to, this fixes bug 6996: Android: Mouse pointer control with analog joystick is unusable
2017-02-14SDL: Fix jerky/laggy analog joystick mouse controlrsn8887
This fixes bug 6996: Android: Mouse pointer control with analog joystick is unusable
2017-02-01ANDROIDSDL: code optimizationlubomyr
2016-11-08Merge pull request #777 from m-kiewitz/masterEugene Sandulenko
SDL: Fix keyboard on macOS, when using SDL2, fix directional keypad
2016-10-23ANDROIDSDL: back button re-mapped to F13 keycode. F13 keycode assigned to ↵lubomyr
call scummvm in-game menu. CONTROL key now can be uses with games
2016-10-18SDL: Fix typo in function nameOri Avtalion
2016-10-09JANITORIAL: Remove more trailing spacesEugene Sandulenko
2016-09-21ANDROIDSDL: fixed switching to capital letterlubomyr
2016-09-20SDL: mapKey changed as virtual functionlubomyr
2016-08-29ANDROIDSDL: Fix menu buttonEugene Sandulenko
2016-07-25SDL: Disable keycode remapping when building for WinCEBastien Bouclet
WinCE does not have MapVirtualKey.
2016-07-25SDL: Fix Windows SDL1 keycodes to use the active keyboard layoutBastien Bouclet
2016-07-03SDL: Fix keyboard on macOS, when using SDL2, fix directional keypadMartin Kiewitz
This will hopefully fully fix keyboard issues for macOS / SDL2, for example when pressing "alt-x". Also reset .ascii to 0, when Num-Lock is NOT enabled and keypad directional keys are pressed. This was fixed inside AGI+SCI previously. The latter shouldn't cause issues, but in case it does, the affected engine should get fixed and use keycodes instead.
2016-07-03Revert "SDL: Fix keyboard on macOS, fix directional keypad"Martin Kiewitz
This reverts commit 9aa7174218983bb1cf6fd98325082ca7d37f50fb. For now.
2016-07-03SDL: Fix keyboard on macOS, when using SDL2, fix directional keypadMartin Kiewitz
This will hopefully fully fix keyboard issues for macOS / SDL2, for example when pressing "alt-x". Also reset .ascii to 0, when Num-Lock is NOT enabled and keypad directional keys are pressed. This was fixed inside AGI+SCI previously. The latter shouldn't cause issues, but in case it does, the affected engine should get fixed and use keycodes instead.
2016-05-22SDL: Make TEXTINPUT handling more reliable for SDL2.Johannes Schickel
This reduces the likelihood of entering two characters per keypress in our guy on Windows. In fact, during my brief testing with the filter widget in the launcher I was not able to trigger the former behavior at all anymore.
2016-05-19ANDROIDSDL: add androidsdl backendlubomyr
2016-02-24GCW0: Trigger keyboard only on button down, not on up, otherwise it required ↵Eugene Sandulenko
holding
2016-02-14GCW0: Fix virtual keyboardEugene Sandulenko
2016-02-01Merge pull request #657 from lordhoto/scumm-alt-xEugene Sandulenko
ALL: Handle Alt-x internally in SCUMM.
2016-02-01SDL: Don't mix our key code with SDL's.Johannes Schickel
This case for F# keys was forgotten to update in 8530997fff7b5b9d558f7dd6a0d07c236e4de16f.
2016-01-29SDL: Do not quit on Alt-x.Johannes Schickel
This was originally added in cbd867329e018d7eca12b3a8842e52b8db9f494d to support this LucasArts game hotkey. However, Alt-x is used by other engines as hotkey. Most notably AGI's Leisure Suit Larry in the Land of the Lounge Lizards uses it to skip the age protection. Since we handle Alt-x internally in SCUMM now there is no need to keep this around in our backend code.
2015-12-15PS3: Make use of an updated SDL2 versionBastien Bouclet
This version, available at https://bitbucket.org/bgK/sdl_psl1ght, is based on SDL 2.0.3.
2015-12-13SDL: Slight formatting fixes.Johannes Schickel
2015-03-05SDL: Fake key events for unassociated TEXTINPUT events.Johannes Schickel
2015-03-05SDL: Remove TEXTINPUT events we associate with KEYDOWN.Johannes Schickel
2015-02-16SDL: Add basic abstraction class for the SDL window.Johannes Schickel
2015-01-25SDL: Add experimental support for SDL2.Johannes Schickel
This is based upon skristiansson's change set to make ScummVM work with SDL2.
2015-01-25SDL: Refactor WM specific functionality into SdlGraphicsManager.Johannes Schickel
2015-01-04SDL: Warn if the selected joystick does not existJoel Teichroeb
2014-10-27GCW0: Hardcoded (for now) GCW0 controlsEugene Sandulenko
2014-04-29SAMSUNGTV: Use virtual keyboard event directly, rather than using keycode.D G Turner
As the virtual keyboard trigger has been moved to CTRL-F7, the previous code which generates a unmodified F7 event to do this will not work. Rather than just adding the CTRL modifier, this code changes the backend to directly generate the virtual keyboard trigger event directly. This avoids any future breakage if the key combination is changed again.
2014-04-29PS3: Use virtual keyboard event directly, rather than using keycode.D G Turner
As the virtual keyboard trigger has been moved to CTRL-F7, the previous code which generates a unmodified F7 event to do this will not work. Rather than just adding the CTRL modifier, this code changes the backend to directly generate the virtual keyboard trigger event directly. This avoids any future breakage if the key combination is changed again.
2014-04-29MAEMO: Use virtual keyboard event directly, rather than using keycode.D G Turner
As the virtual keyboard trigger has been moved to CTRL-F7, the previous code which generates a unmodified F7 event to do this will not work. Rather than just adding the CTRL modifier, this code changes the backend to directly generate the virtual keyboard trigger event directly. This avoids any future breakage if the key combination is changed again.
2014-04-29LINUXMOTO: Use virtual keyboard event directly, rather than using keycode.D G Turner
As the virtual keyboard trigger has been moved to CTRL-F7, the previous code which generates a unmodified F7 event to do this will not work. Rather than just adding the CTRL modifier, this code changes the backend to directly generate the virtual keyboard trigger event directly. This avoids any future breakage if the key combination is changed again.