修复部分启动瞬间报错会导致闪退

This commit is contained in:
MrZ626
2021-03-19 01:24:35 +08:00
parent 6aed6a0926
commit 0e0d88d755

View File

@@ -356,6 +356,7 @@ local function secondLoopThread()
repeat yield()until mainLoop()
end
function love.errorhandler(msg)
if LOADED then
--Generate error message
local errData={}
errData.mes={"Error:"..msg}
@@ -403,6 +404,58 @@ function love.errorhandler(msg)
return
end
until status(loopThread)=="dead"
else
ms.setVisible(true)
love.audio.stop()
local err={"Error:"..msg}
local trace=debug.traceback("",2)
local c=2
for l in trace:gmatch("(.-)\n")do
if c>2 then
if not l:find("boot")then
err[c]=l:gsub("^\t*","")
c=c+1
end
else
err[2]="Traceback"
c=3
end
end
DBP(table.concat(err,"\n"),1,c-2)
gc.reset()
gc_setColor(1,1,1)
SFX.fplay("error",SETTING and SETTING.voc*.8 or 0)
local errorMsg=text and text.errorMsg or"An error has occurred during loading.\nError info has been created, and you can send it to the author."
return function()
love.event.pump()
for E,a,b in love.event.poll()do
if E=="quit"or a=="escape"then
destroyPlayers()
return 1
elseif E=="resize"then
SCR.resize(a,b)
end
end
gc.clear(.3,.5,.9)
gc_push("transform")
gc.replaceTransform(xOy)
setFont(100)gc_print(":(",100,40,0,1.2)
setFont(40)gc.printf(errorMsg,100,200,SCR.w0-100)
setFont(20)
gc_print(SYSTEM.."-"..VERSION_NAME,100,660)
gc.printf(err[1],626,380,1260-626)
gc_print("TRACEBACK",626,450)
for i=4,#err-2 do
gc_print(err[i],626,400+20*i)
end
gc_pop()
gc_present()
love.timer.sleep(.26)
end
end
end
local WSnames={"app","user","chat","play","stream"}
local WScolor={