mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-28 18:06:09 +02:00
Implement session teardown and resource management for in-process transitions
- Introduced `teardownMountedSession` to handle cleanup of mounted versions, generated data, and mod states during transitions between the editor and launcher. - Added `flushEditorPackageLoaded` to evict save-editor modules from `package.loaded` dynamically, ensuring a clean state for subsequent sessions. - Implemented `Game:reset` and `Game2:reset` methods to clear session-specific fields, allowing for a fresh start when returning to the launcher. - Enhanced `Renderer` and `TileRenderer` to release GPU resources immediately, preventing memory leaks during rapid transitions. - Updated `MagnetTrainRide` to support OAM priority overlays and manage background rendering with new shader functionality. This commit improves the stability and performance of the application during in-process transitions, particularly on Android. fixes Yellow color palette for title screen fixes #1662 #1643 #1536 and finishes fixing #1597
This commit is contained in:
@@ -77,4 +77,26 @@ do
|
||||
check(Runtime.modRequire == nil, "Runtime.reset clears modRequire")
|
||||
end
|
||||
|
||||
-- 4. returnToLauncher / closeEditor also clear Assets.loader (orphaned Loader)
|
||||
do
|
||||
local Assets = require("src.render.Assets")
|
||||
Assets.installLoader({
|
||||
overrideOrder = function() return { { id = "x", path = "mods/x" } } end,
|
||||
derivedPath = function() return nil end,
|
||||
})
|
||||
check(Assets.loader ~= nil, "Assets.loader installed for the session")
|
||||
Assets.installLoader(nil)
|
||||
check(Assets.loader == nil, "session teardown clears Assets.loader")
|
||||
end
|
||||
|
||||
-- 5. Gen1 Game:reset exists so main.lua need not guess field names
|
||||
do
|
||||
local Game = require("src.core.Game")
|
||||
check(type(Game.reset) == "function", "Game:reset is defined for in-process return")
|
||||
Game.mods = { stale = true }
|
||||
Game:reset()
|
||||
check(Game.mods == nil, "Game:reset clears session fields")
|
||||
check(type(Game.load) == "function", "Game:reset keeps methods")
|
||||
end
|
||||
|
||||
T.finish("android_exit_to_launcher_test")
|
||||
|
||||
Reference in New Issue
Block a user