Commit graph

250 commits

Author SHA1 Message Date
alexey.lysiuk
053736363d - extended list of predefined filenames for SDL2 shared object lookup
https://forum.zdoom.org/viewtopic.php?t=65348
2019-07-14 10:52:32 +03:00
alexey.lysiuk
aba7132846 - cleaned up language detection leftovers 2019-07-13 15:47:43 +03:00
Christoph Oelckers
2766303cfc - consolidated the 3 atterm implementations.
Each platform had its own copy. Why?
2019-06-10 12:01:01 +02:00
Gutawer
aa75f086fa - cleaned up SDL mouse event handling
* Right/middle clicking no longer cancels out the mouse motion events
* The events for the side mouse buttons (EV_GUI_BackButtonDown/Up, EV_GUI_FwdButtonDown/Up) were never fired
* The EV_GUI_WheelRight/Left events were never fired
* The key bindings for mouse buttons above 3 (from 4-8) were broken - pressing MOUSE4 would bind to MOUSE6, for example
2019-06-08 13:14:02 +03:00
alexey.lysiuk
024456048e - fixed access to wrong event data in SDL backend
Wrong button state event data were read on mouse motion

https://forum.zdoom.org/viewtopic.php?t=64950
2019-06-08 10:56:54 +03:00
Magnus Norddahl
756c593e96 - create a new error class for vulkan errors as they are only recoverable during initialization (unlike CRecoverableError which is recoverable during normal processing)
- improve vulkan errors by including the status code returned by vulkan if they fail
2019-05-23 14:09:05 +02:00
alexey.lysiuk
6b5f7b4763 - destroy SDL window on Vulkan to OpenGL fallback
https://forum.zdoom.org/viewtopic.php?t=64412
2019-04-23 14:42:43 +03:00
Christoph Oelckers
146f7035d8 - fixed: The Vulkan device may only be deleted if Vulkan is present. 2019-04-19 08:36:19 +02:00
Rachael Alexanderson
09a2b53b21 - rename vid_backend to vid_enablevulkan. Also changed the CVAR from a 0-state enable to 1-state. So vid_enablevulkan==1 enables vulkan now. This should be less confusing. 2019-04-16 08:10:57 -04:00
alexey.lysiuk
fb51b5d137 - fixed compilation of SDL backend
src/posix/sdl/sdlglvideo.cpp:358:10: error: ‘MIN_WIDTH’ is not a member of ‘Priv’
src/posix/sdl/sdlglvideo.cpp:358:33: error: ‘MIN_HEIGHT’ is not a member of ‘Priv’
src/posix/sdl/sdlglvideo.cpp:360:7: error: ‘MIN_WIDTH’ is not a member of ‘Priv’
src/posix/sdl/sdlglvideo.cpp:361:7: error: ‘MIN_HEIGHT’ is not a member of ‘Priv’
2019-04-07 17:26:32 +03:00
Rachael Alexanderson
efa9284141 - consolidate minimum screen resolution so that it's easier to change 2019-04-07 06:49:54 -04:00
Magnus Norddahl
9f0f659db0 - remove old vid_maxfps implementations as they were garbage anyway and the new one works on all the platforms 2019-03-26 11:10:17 +01:00
Christoph Oelckers
a0b0467e91 - restrict Vulkan to 64 bit builds. 2019-03-24 14:34:48 +01:00
Rachael Alexanderson
dd4ef010ab Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-18 04:05:19 -04:00
Christoph Oelckers
ba13a540e4 - changed default graphics substitution rules to be more localization friendly.
The default was changed to replace graphics if only known content is affected.
This also required blocking the feature for Hacx, Harmony and Action Doom 2 which have no localization yet and would fall back on Doom's texts if not blocked.
2019-03-17 09:27:40 +01:00
Christoph Oelckers
dbd6c2eabf - removed the automatic system language detection for Windows.
Default language is now always American English, just like on Linux and macOS.
2019-03-16 00:07:18 +01:00
alexey.lysiuk
7b5eedea32 - implemented OpenGL / Vulkan switch in SDL backend 2019-03-12 16:12:14 +02:00
alexey.lysiuk
108ea066f3 - added initial support of Vulkan to SDL backend
Removed all platform-specific code from vulkan device
2019-03-06 13:38:45 +02:00
Magnus Norddahl
319099fee9 Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-05 03:07:30 +01:00
alexey.lysiuk
a3554bda70 - replaced all usages of insecure vsprintf() function 2019-03-04 17:35:38 +02:00
alexey.lysiuk
802d37f377 - fixed compilation of Linux target
Base and OpenGL framebuffer classes still require proper splitting
2019-03-04 12:47:00 +02:00
Christoph Oelckers
e091369a38 - removed FCriticalSection and replaced all of its uses with std::mutex.
There's really no need for a non-standard solution here anymore with C++11.
This also fixes an unreleased lock in the WildMidi code.
2019-02-22 20:24:24 +01:00
Christoph Oelckers
d15e3391a0 Merge remote-tracking branch 'remotes/origin/master' into localization
# Conflicts:
#	src/v_font.cpp
2019-02-16 17:35:15 +01:00
Robert Cochran
07e0323771 Add handling of left and right mousewheel events to the SDL2 input path 2019-02-16 17:23:14 +01:00
Christoph Oelckers
64685705d0 - made the console Unicode-capable.
This also necessitated some character remapping in the console font to move the Windows-1252 extra characters to their proper Unicode code points.
2019-02-16 13:05:19 +01:00
Christoph Oelckers
5f574033b5 pass full Unicode characters to EV_GUI_Char for Linux and macOS.
The Linux backend looked like it didn't handle anything non-ASCII at all, but this all needs to be tested.
Windows will be a bit more work because it requires using the Unicode API for creating the main window.
2019-02-14 14:29:49 +01:00
alexey.lysiuk
8137162ca0 - fixes compilation of POSIX targets
src/posix/cocoa/i_input.mm:95:22: error: use of undeclared identifier 'E_CheckUiProcessors'
src/posix/cocoa/i_input.mm:200:21: error: use of undeclared identifier 'E_CheckRequireMouse'
src/posix/sdl/i_input.cpp:183:19: error: use of undeclared identifier 'E_CheckUiProcessors'
src/events.cpp:540:1: error: pasting formed '::RenderFrame', an invalid preprocessing token
src/events.cpp:541:1: error: pasting formed '::WorldLightning', an invalid preprocessing token
src/events.cpp:542:1: error: pasting formed '::WorldTick', an invalid preprocessing token
src/events.cpp:543:1: error: pasting formed '::UiTick', an invalid preprocessing token
src/events.cpp:544:1: error: pasting formed '::PostUiTick', an invalid preprocessing token
2019-02-03 11:19:17 +02:00
Christoph Oelckers
45dc9a7b47 - renamed the level variables.
currentUILevel is now primaryLevel.
For ZScript, currentVMLevel was added. This is also exported as 'level' and will change as needed.
This also means that no breaking deprecations will be needed in the future, because in order to sandbox a level only 4 variables need to be handled: level, players, playeringame and consoleplayer.
The remaining global variables are not relevant for the level state.

The static 'level' has been mostly removed from the code except some places that still need work.
2019-02-02 00:25:51 +01:00
alexey.lysiuk
5278274acf - fixed compilation errors with POSIX targets
src/posix/cocoa/i_video.mm:559:2: error: use of undeclared identifier 'atterm'
src/posix/sdl/hardware.cpp:85:28: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:10: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:23: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:48: error: ‘GS_INTERMISSION’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:80: error: ‘GS_FINALE’ was not declared in this scope
src/posix/sdl/i_system.cpp:115:25: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_system.cpp:372:30: error: invalid use of incomplete type ‘const struct dirent’
src/posix/sdl/i_system.cpp:375:42: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:391:12: error: request for member ‘current’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:12: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:56: error: request for member ‘namelist’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:393:22: error: ‘alphasort’ was not declared in this scope
src/posix/sdl/i_system.cpp:393:31: error: ‘scandir’ was not declared in this scope
src/posix/sdl/i_system.cpp:394:16: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:401:31: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:403:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:404:33: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:406:39: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:413:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:425:16: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:425:29: error: expected primary-expression before ‘const’
src/posix/sdl/i_system.cpp:426:1: error: expected ‘,’ or ‘;’ before ‘{’ token
src/posix/sdl/i_main.cpp:160:6: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:19: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:44: error: ‘GS_TITLELEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:217:18: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_main.cpp:242:11: error: ‘I_Quit’ was not declared in this scope
src/gameconfigfile.cpp:126:27: error: ‘SHARE_DIR’ was not declared in this scope
src/scripting/decorate/thingdef_parse.cpp:929:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_parse.cpp:937:3: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_states.cpp:564:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/vm/jit_runtime.cpp:957:2: error: ‘unique_ptr’ is not a member of ‘std’
src/scripting/vm/jit_runtime.cpp:957:38: error: expected primary-expression before ‘>’ token
src/scripting/vm/jit_runtime.cpp:957:40: error: ‘nativeSymbols’ was not declared in this scope
src/utility/cmdlib.cpp:962:2: error: ‘DIR’ was not declared in this scope
src/utility/cmdlib.cpp:962:7: error: ‘directory’ was not declared in this scope
src/utility/cmdlib.cpp:962:34: error: ‘opendir’ was not declared in this scope
src/utility/cmdlib.cpp:967:33: error: ‘readdir’ was not declared in this scope
src/utility/cmdlib.cpp:969:10: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:973:34: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:985:20: error: ‘closedir’ was not declared in this scope
2019-02-01 11:08:58 +02:00
Christoph Oelckers
f6a91e1722 - moved the I_Error prototypes to doomerrors.h to avoid having to include the low level system header for this. 2019-01-31 19:38:04 +01:00
Christoph Oelckers
a7746278a8 - a few remaining simple ones
This also removes a few pointless comments that popped up and consolidates setting a level's music into a subfuntion.
2019-01-28 01:25:52 +01:00
Rachael Alexanderson
dc27011370 - remove vid_hwgamma, force always use shader gamma
*** note to drfrag: Please don't cherry-pick this commit. Systems that do not use renderbuffers will still need this feature!
2019-01-23 21:50:11 +01:00
Christoph Oelckers
a73c065811 - replaced several explicit allocations with TArrays. 2018-12-17 18:28:04 +01:00
Christoph Oelckers
ab624c8c5a Merge branch 'master' into Texture_Cleanup
# Conflicts:
#	src/textures/hires/hqresize.cpp
2018-12-11 20:27:24 +01:00
alexey.lysiuk
8b46be7686 - print VM stack trace on startup abort exception
https://forum.zdoom.org/viewtopic.php?t=62650
2018-12-11 10:46:56 +02:00
Christoph Oelckers
03626107eb - changed multipatch texture composition to always composite off full source images and not do it recursively.
Previously it tried to copy all patches of composite sub-images directly onto the main image.
This caused massive complications throughout the entire true color texture code and made any attempt of caching the source data for composition next to impossible because the entire composition process operated on the raw data read from the texture and not some cacheable image. While this may cause more pixel data to be processed, this will be easily offset by being able to reuse patches for multiple textures, once a caching system is in place, which even for the IWADs happens quite frequently.

Removing the now unneeded arguments from the implementation also makes things a lot easier to handle.
2018-12-08 17:23:15 +01:00
Christoph Oelckers
85a3edf583 - removed the no longer needed exception prevention hack.
# Conflicts:
#	src/scripting/vm/vmframe.cpp
2018-12-01 14:27:18 +01:00
Christoph Oelckers
42b9a41421 - removed the longjmp based exception catch/rethrow mechanism and instead force-terminate in case a user exception is thrown while the VM is executing JITed code on a non-Windows system
On Windows none of this is needed, because we can generate a proper unwind frame for the JITed functions, but even on Linux, it would require manual additions to each single piece of native code that ever gets called from inside a JIT compiled function.
This is an utterly prohibitive proposition because it makes direct native calls a virtual impossibility
So, in order to get the thrown error properly presented both I_Error and ThrowAbortException will now forward to I_FatalError if it is called from inside a JIT context.
2018-11-30 21:30:14 +01:00
alexey.lysiuk
dc6ba6bd52 - fixed compilation of POSIX targets
src/doomerrors.h:74:14: error: exception specification of overriding function is more lax than base version
src/posix/sdl/i_main.cpp:272:28: error: 'class std::exception' has no member named 'GetMessage'
2018-11-23 15:14:15 +02:00
Christoph Oelckers
bced30d1e3 - made CDoomError inherit from std::exception so that the main catch block can also deal with exceptions thrown by the STL.
- Also do not ignore empty exception messages as irrelevant. The only irrelevant exception type is CNoRunExit.
2018-11-23 10:18:52 +01:00
alexey.lysiuk
2e02b7e555 - fixed compilation of SDL backend
error: unknown type name 'OpenGLFrameBuffer'
2018-10-29 22:41:24 +02:00
alexey.lysiuk
0e6af71376 - improved SDL_GetWindowBordersSize() pointer loading
https://forum.zdoom.org/viewtopic.php?t=61913
2018-09-04 18:19:01 +03:00
Marisa Kirisame
4e690b1f60 Fix SDL window "sticking" to the center of the screen after using vid_setsize. 2018-08-15 21:03:07 +02:00
Marisa Kirisame
66f616dc1a Set default window size to 80% of current display in SDL.
Make vid_setsize center window on current display in SDL.
2018-07-28 17:45:19 +02:00
Christoph Oelckers
0d8d860c93 - moved the win_* CVARs to a single platform independent location. 2018-07-28 10:27:41 +02:00
Christoph Oelckers
3b53f31da3 - default to fullscreen display. 2018-07-28 10:05:50 +02:00
Marisa Kirisame
79f0deaff4 Implement vid_setsize on SDL backend. 2018-07-25 10:34:52 +03:00
alexey.lysiuk
4bb125d76c - removed obsolete list of video modes 2018-07-22 11:04:38 +03:00
alexey.lysiuk
651e735246 Merge branch 'master' into modern 2018-06-29 17:51:10 +03:00
alexey.lysiuk
ecb5bfec13 - removed obsolete code from POSIX backends 2018-06-29 17:50:19 +03:00