The fix adds a sanity check to the D3D and GL device enumeration function that exits early if there's no registered display from the OS(implying it's running in commandline).
With newer versions of SDL, attempting to enumerate the GL device causes a segfault because the OS will return back a valid context, but the context isn't actually valid. So when tested against, it crashes. Avoiding enumerating the device when you're not in a position to render works around the issue.
TODO: If the machine is running in terminal-only mode, and thus has no valid render context, but still has a monitor plugged into the machine, it can sidestep the sanity check and still result in a segfault. Need a more robust check for that circumstance in a future fix.
refactor concurency test conu=sumer thread runner to generate timeouts at excessive attempts (32ms*runlength)
threadsafefreelist reporting augs
scripttest object name conflict resolutions
skip testing platform window creation if no monitor was found
The SDL_WINDOWEVENT_DISPLAY_CHANGED event reports an incorrect DeviceId when changed via command. The resolution sanity check that is applied when changing monitors is moved to the SDL_WINDOWEVENT_MOVED event where DeviceId is properly detected.
Changed mouse pointer coordinates from client to screen space. Done in order to be consistent with existing engine comments, API help doc string, and how it used to work in Win32 window management code.
void PlatformWindow::setVideoMode(const GFXVideoMode &mode)
{
_setVideoMode(mode);
getScreenResChangeSignal().trigger(this, true);
}
allowing the resize trigger to go off, as well as any other shared functionality we want to slim the per-implementation specs down to later down the line
Added navigation history to AB, as well as ability to navigate via forward and backward buttons and breadcrumb buttons
Added folder 'asset type', allowing you to create, rename, delete and move folders via the asset browser for better organization
Adjusted various behaviors to work with the address-driven navigation/organization of the AB
Expanded visibility options for the AB and integrated them into editor settings so they are retained
Added Search field for searching the folder structure, in addition to the existing preview tiles search
Adjusted drag-n-drop behavior of the platform code so it accepts dropping folders
Added ability to dump active PostEffects list to see what is currently running
Added ability to mark specific items in GuiTreeViewCtrl as hidden
Made reflection probe bounds boxes translucent rather than wireframe to improve editing visibility
Added expanded loose file references to LevelAsset for common companion files like decals and posteffect scrips
Added editor setting for Editor Layout Mode, allowing you to set the editor into 'Modern' layout.
Added editor settings to set default import config ruleset, and also ability to set auto-import. If both of these are set, then as long as the importing assets have no errors, they will auto-process and the user doesn't need to manually check and confirm them via the asset import window
Adds the sdl implementation for all used PlatformWindowManager monitor functions. [This unit test](https://github.com/GarageGames/Torque3D/blob/development/Engine/source/windowManager/test/windowManagerTest.cpp#L28) will now pass for the SDL platform. Here is the equivalent in TorqueScript to test the functions via the Canvas object:```//Canvas.listDisplays();
function Canvas::listDisplays(%this)
{
%count = %this.getMonitorCount();
echo(%count SPC "monitor(s) detected.");
for (%i = 0; %i < %count; %i++)
{
echo("Monitor #" @ (%i + 1) SPC %this.getMonitorName(%i) @ ": " @ %this.getMonitorRect(%i));
}
}```