aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics/sdl
AgeCommit message (Collapse)Author
2017-11-29SDL: Don't use the window size hint for fullscreenBastien Bouclet
Prevents the opengl backend from changing mode when entering fullscreen for games with a window size hint. Fixes #10335. Closes gh-1074.
2017-11-27SDL: Store fake mouse warp event in virtual coordinatesColin Snover
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-11SDL: Preserve mouse position when switching between OpenGL and SurfaceSDL ↵Thierry Crozat
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-07SDL: Get correct default graphics mode ID when queriedColin Snover
Fixes Trac#10312.
2017-10-15SDL: Allow window size to be reset whenever launcher is visibleColin Snover
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-15BACKENDS: Fix missing mouse events when system cursor cannot be movedColin Snover
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-15BACKENDS: Do not send mouse events to games occurring outside the game draw rectColin Snover
2017-10-15BACKENDS: Also hide mouse cursor outside game area when an engine has hidden ↵Colin Snover
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-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-10-07BACKENDS: Fix window sizing of games that switch between multiple resolutionsColin Snover
2017-10-07SDL: Do not reset window size when engines update rendering surfaceColin Snover
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.
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: Cleanup graphics manager switching a bit.Johannes Schickel
2015-01-25SDL: Refactor WM specific functionality into SdlGraphicsManager.Johannes Schickel
2014-02-18SDL: Make GPL headers consistent in themselves.Johannes Schickel
2013-10-24SDL: Further small cleanup related to manager switching.Johannes Schickel
2013-10-24SDL: Make activateManager/deactivateManager SdlGraphicsManager specific.Johannes Schickel
We can do this now that we can use virtual inheritance and dynamic_cast because we enabled RTTI.
2013-10-24SDL: Let SdlGraphicsManager inherit from GraphicsManager.Johannes Schickel
2013-10-23SDL: Clean up graphics manager switching slighty.Johannes Schickel
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...
2011-08-18SDL: Fix typo.Johannes Schickel
2011-08-09SDL: Take advantage of SdlGraphicsManager.Johannes Schickel
This gets rid of the hacks, where SdlEventSource added events with custom type numbers to pass SDL_VIDEOEXPOSE and SDL_VIDEORESIZE to the graphics manager. Furthermore it get rids of the uninituitive and hard to trace way of assigning the proper mouse coordinates to mouse related events. Formerly it passed the real screen coordinates through the even dispatching api to the graphics manager (at least hopefully ;-) and let that handle creating a new event with the proper coordinates. Now instead SdlEventSource handles the proper coordinate setup itself. Since this is a behavior change and I can not test all the SDL based small devices ports this commit might break compilation for them and more serve it might also break mouse position behavior. If any of that occurs I am sorry about it.
2011-08-09SDL: Add a new base class for graphics managers utilizing SDL.Johannes Schickel
2011-06-19SDL: Rename SdlGraphicsManager to SurfaceSdlGraphicsManager to reflect its ↵Johannes Schickel
purpose. Hopefully I catched all uses of the old name in our ports...
2011-06-19SDL: Formatting fixes.Johannes Schickel
2011-06-06I18N: Make some OSD messages translatableThierry Crozat
2011-06-06OSYSTEM: displayMessageOnOSD() now accepts non-ASCII stringsThierry Crozat
It should now accept strings encoded using the current TranslationManaged charset (e.g. translated text).
2011-06-06GRAPHICS: Get rid of kSODFont (ScummFont)Thierry Crozat
OSD is now using the kGUIFont instead. The main advantage is that the kGUIFont can be used for translated text while only ASCII characters were present in ScummFont.
2011-06-04BACKENDS: Replace OSystem::disableCursorPalette by setFeatureState callsMax Horn
2011-06-04COMMON: Rename kFeatureCursorHasPalette -> kFeatureCursorPaletteMax Horn
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-05-02ALL: Mark printf and various other symbols as forbiddenMax Horn
Right now, a few places in the frontend code still use printf and consorts. We mark the affected files with a FIXME for now, and add a dedicated exception for each. To be fixed! Also tweak FORBIDDEN_SYMBOL_REPLACEMENT to hopefully really always enforce a compiler error
2011-05-01Merge pull request #16 "Add a PixelFormat to Graphics::Surface.".Johannes Schickel
For further discussion check here: https://github.com/scummvm/scummvm/pull/16 Conflicts: graphics/png.cpp
2011-04-28JANITORIAL: Reduce header dependencies in shared codeOri Avtalion
Some backends may break as I only compiled SDL
2011-04-17ALL/GRAPHICS: Remove Surface::bytesPerPixel.Johannes Schickel
2011-04-17SDL: Properly setup internal Surface formats.Johannes Schickel
2011-03-29JANITORIAL: Remove/comment unused varsdhewg
Found by GCC 4.6's -Wunused-but-set-variable
2011-03-17Merge branch 'sdl-focus-rect' of https://github.com/lordhoto/scummvmJohannes Schickel
Conflicts: backends/graphics/sdl/sdl-graphics.cpp
2011-03-08WINCE: Make scummvm compile and run again for WinCE platform (patch #3202337)Max Horn
2011-02-24SDL: Use the SDL_Surface's pitch in copyRectToScreen.Johannes Schickel
This fixes messed up graphics, when SDL decides to add padding bytes to the lines of an SDL_Surface. Formerly the code always calculated the pitch via w*bpp, which of course does not work in all cases.
2011-02-24SDL: Output a warning in case the focus rect does not fit inside the screen.Johannes Schickel
Sadly it seems the engines do not care whether their focus rect really fits inside the game screen. To ease finding such instances (which might cause odd clipping by the backend) I added a warning for them.
2011-02-24SDL: Add config file variable to enable the focus rect debug code.Johannes Schickel
The variable is named "use_sdl_debug_focusrect" for now. The debug code is still only enabled, when a ScummVM debug version is built though.
2011-02-24SDL: Add a debug focus rect implementation.Johannes Schickel
This implementation currently draws a rect frame around the focus rect area.
2011-02-24SDL: Move focus rectangle dummy implementations to .cpp file.Johannes Schickel
2011-02-14SDL: Adapt SDL graphics module to the setPalette/grabPalette RGBA->RGB change.Johannes Schickel
2011-02-07COMMON: OSystem now has a PaletteManagerMax Horn
svn-id: r55806
2010-11-29SDL: Slight formatting fix.Johannes Schickel
svn-id: r54583
2010-11-29BACKENDS: Close Memory Leak of Mouse Surfaces in SDL Graphics BackendDavid Turner
svn-id: r54579
2010-11-29BACKENDS: Include scummsys.h at top of all .cpp files, *before* any #ifdefsMax Horn
svn-id: r54573