Add a mechanism to avoid blank window at startup

This commit is contained in:
Francesco Abbate 2020-11-16 14:48:15 +01:00
parent a0e3ab7933
commit edaa8fb42b
1 changed files with 9 additions and 1 deletions

View File

@ -450,12 +450,20 @@ end)
function core.run() function core.run()
local idle_iterations = 0
while true do while true do
core.frame_start = system.get_time() core.frame_start = system.get_time()
local did_redraw = core.step() local did_redraw = core.step()
local need_more_work = run_threads() local need_more_work = run_threads()
if not did_redraw and not need_more_work then if not did_redraw and not need_more_work then
system.wait_event() idle_iterations = idle_iterations + 1
-- do not wait of events at idle_iterations = 1 to give a chance at core.step to run
-- and set "redraw" flag.
if idle_iterations > 1 then
system.wait_event()
end
else
idle_iterations = 0
end end
local elapsed = system.get_time() - core.frame_start local elapsed = system.get_time() - core.frame_start
system.sleep(math.max(0, 1 / config.fps - elapsed)) system.sleep(math.max(0, 1 / config.fps - elapsed))