1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-11-05 10:49:41 +01:00
VVVVVV/desktop_version/src
Misa 5c7e869ee7 Work around SDL2 bug where VSync hint only applies on renderer creation
Ugh, this is terrible and stupid and I hate myself for it.

Anyway, since the SDL2 VSync hint only applies when the renderer is
created, we have to re-create the renderer whenever VSync is toggled.
However, this also means we need to re-create m_screenTexture as well,
AND call ResizeScreen() after that or else the letterbox/integer modes
won't be applied.

Unfortunately, this means that in main(), gameScreen.init() will create
a renderer only to be destroyed later by graphics.processVsync().
There's not much we can do about this. Fixing this would require putting
graphics.processVsync() before gameScreen.init(). However, in order to
know whether the user has VSync set, we would have to call
game.loadstats() first, but wait, we can't, because game.loadstats()
mutates gameScreen! Gahhhhhh!!!!

@leo60228 suggested to fix that problem (
https://github.com/TerryCavanagh/VVVVVV/pull/220#issuecomment-624217939
) by adding NULL checks to game.loadstats() and then calling it twice,
but then you're trading wastefully creating a renderer only to be
destroyed, for wastefully opening and parsing unlock.vvv twice instead
of once. In either case, you're doing something twice and wasting work.
2020-06-19 17:44:53 -04:00
..
BinaryBlob.cpp Maybe check the right size m8 2020-06-14 22:44:34 -04:00
BinaryBlob.h Sigh. 2020-06-15 07:37:05 -04:00
BlockV.cpp Remove blockclass::clear(), simplify blockclass initializations 2020-04-03 23:28:47 -04:00
BlockV.h Remove blockclass::clear(), simplify blockclass initializations 2020-04-03 23:28:47 -04:00
editor.cpp Fix editor ghost colors updating too fast 2020-06-19 09:05:48 -04:00
editor.h Fix editor ghost colors updating too fast 2020-06-19 09:05:48 -04:00
Ent.cpp Fix red pill/mannequins/transmittor/radar dish being offset for 1 frame 2020-06-19 09:05:48 -04:00
Ent.h Fix, for in-GAMEMODE sprites, their colors updating too fast 2020-06-19 09:05:48 -04:00
Entity.cpp Fix animating entities' drawframes not being updated for 1 frame 2020-06-19 09:05:48 -04:00
Entity.h Interpolate trophy text 2020-06-19 09:05:48 -04:00
Enums.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
FileSystemUtils.cpp Like the thing I did but the opposite 2020-06-12 16:21:45 -04:00
FileSystemUtils.h Remove TinyXML-1 2020-06-12 15:08:29 -04:00
Finalclass.cpp Statically allocate level arrays 2020-05-29 10:21:25 -04:00
Finalclass.h Refactor Finalclass.cpp to not use strings for tilemaps 2020-05-17 22:03:29 -04:00
Game.cpp Add VSync graphics option, off by default 2020-06-19 09:05:48 -04:00
Game.h Add being able to toggle over/fixed-30-FPS, off by default 2020-06-19 09:05:48 -04:00
GOGNetwork.c Add support for multiple Network backends, stub in GOGNetwork 2020-01-13 11:15:22 -05:00
Graphics.cpp Work around SDL2 bug where VSync hint only applies on renderer creation 2020-06-19 17:44:53 -04:00
Graphics.h Add VSync graphics option, off by default 2020-06-19 09:05:48 -04:00
GraphicsResources.cpp Fix some leaks 2020-06-07 22:40:03 -04:00
GraphicsResources.h Fix some leaks 2020-06-07 22:40:03 -04:00
GraphicsUtil.cpp Move analogue mode filter update logic to fixed-timestep loop 2020-06-19 09:05:48 -04:00
GraphicsUtil.h Move analogue mode filter update logic to fixed-timestep loop 2020-06-19 09:05:48 -04:00
Input.cpp Add 1 to fade-to-menu/lab delay 2020-06-19 09:05:48 -04:00
Input.h Remove global args from Input.cpp 2020-04-03 10:40:50 -04:00
KeyPoll.cpp Don't extern gameScreen, use *graphics.screenbuffer instead 2020-06-19 17:44:53 -04:00
KeyPoll.h Remove passing around pointer to gameScreen from KeyPoll::Poll() 2020-06-13 14:50:33 -04:00
Labclass.cpp Statically allocate level arrays 2020-05-29 10:21:25 -04:00
Labclass.h Refactor Labclass.cpp to not use strings for tilemaps 2020-05-17 22:03:29 -04:00
Logic.cpp Fix editor ghost colors updating too fast 2020-06-19 09:05:48 -04:00
Logic.h Merge towerlogic() into gamelogic() 2020-04-26 19:07:40 -04:00
main.cpp Work around SDL2 bug where VSync hint only applies on renderer creation 2020-06-19 17:44:53 -04:00
MakeAndPlay.h Re-comment out #define MAKEANDPLAY 2020-02-09 10:42:03 -05:00
Map.cpp Fix 1-frame glitch when entering a room with plats in finalmode 2020-06-19 09:05:48 -04:00
Map.h Refactor how "hidden names" work 2020-06-19 09:05:48 -04:00
Maths.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
Music.cpp Add bounds checks to script commands that didn't have them 2020-06-13 01:24:42 -04:00
Music.h Don't leak binaryBlob 2020-06-07 22:40:03 -04:00
Network.c Allow for conditional building of Steam and GOG APIs 2020-06-01 14:21:06 -04:00
Network.h Add support for multiple Network backends, stub in GOGNetwork 2020-01-13 11:15:22 -05:00
Otherlevel.cpp Statically allocate level arrays 2020-05-29 10:21:25 -04:00
Otherlevel.h Remove i/j/k attributes from classes that don't need them 2020-06-14 14:37:29 -04:00
preloader.cpp Move preloader update code to new function preloaderlogic() 2020-06-19 09:05:48 -04:00
preloader.h Move preloader update code to new function preloaderlogic() 2020-06-19 09:05:48 -04:00
Render.cpp Fix editor ghosts being added multiple times per frame 2020-06-19 09:05:48 -04:00
Render.h Merge towerrender() into gamerender() 2020-04-26 19:07:40 -04:00
Screen.cpp Work around SDL2 bug where VSync hint only applies on renderer creation 2020-06-19 17:44:53 -04:00
Screen.h Don't extern gameScreen, use *graphics.screenbuffer instead 2020-06-19 17:44:53 -04:00
Script.cpp Interpolate bringing up and down quit/pause/teleporter screen 2020-06-19 09:05:48 -04:00
Script.h Refactor custom scripts to not be stored in one giant vector of lines 2020-06-11 22:13:52 -04:00
Scripts.cpp Remove include guards from Scripts.cpp and TerminalScripts.cpp 2020-06-11 22:13:52 -04:00
SoundSystem.cpp Revert "Add destructor for SoundTrack/MusicTrack (and explicitly define move constructor to prevent double-free)" 2020-06-07 22:40:03 -04:00
SoundSystem.h Revert "Add destructor for SoundTrack/MusicTrack (and explicitly define move constructor to prevent double-free)" 2020-06-07 22:40:03 -04:00
Spacestation2.cpp Statically allocate Prize for the Reckless tilemap 2020-05-29 19:39:05 -04:00
Spacestation2.h Refactor Spacestation2.cpp to not use strings for tilemaps 2020-05-17 22:03:29 -04:00
SteamNetwork.c Fix build on DragonFlyBSD 2020-04-23 23:35:33 -04:00
TerminalScripts.cpp Remove include guards from Scripts.cpp and TerminalScripts.cpp 2020-06-11 22:13:52 -04:00
Textbox.cpp Fix special text box images sometimes flashing 2020-06-19 09:05:48 -04:00
Textbox.h Fix special text box images sometimes flashing 2020-06-19 09:05:48 -04:00
Tower.cpp Remove now-unused fillbackground/fillcontents/fillminitower from Tower 2020-05-17 22:03:29 -04:00
Tower.h Remove i/j/k attributes from classes that don't need them 2020-06-14 14:37:29 -04:00
UtilityClass.cpp Support hex entities in metadata 2020-06-15 20:32:10 -04:00
UtilityClass.h Support hex entities in metadata 2020-06-15 20:32:10 -04:00
WarpClass.cpp Statically allocate level arrays 2020-05-29 10:21:25 -04:00
WarpClass.h Refactor WarpClass.cpp to not use strings for tilemaps 2020-05-17 22:03:29 -04:00