lualoader: Don't draw loader menu with autoboot_delay=-1

This was mostly a cosmetic issue. autoboot_delay=-1 is documented to bypass
the loader menu and immediately execute the boot command, but lualoader
would draw the menu and immediately execute the boot command. No interaction
was possible with the menu.

The fix lifts autoboot_delay processing out of menu.autoboot, which now
takes a delay and does nothing if no delay is specified. This lines up with
my expectations of menu.autoboot's usage from a third party, which may
want more control over the process than the default behavior.

PR:		231610
Approved by:	re (gjb)
This commit is contained in:
Kyle Evans 2018-10-05 17:07:10 +00:00
parent 896571557d
commit c84dbc5329
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=339200

View File

@ -401,8 +401,22 @@ function menu.process(menudef, keypress)
end end
function menu.run() function menu.run()
local delay = loader.getenv("autoboot_delay")
if delay ~= nil and delay:lower() == "no" then
delay = nil
else
delay = tonumber(delay) or 10
end
if delay == -1 then
core.boot()
return
end
menu.draw(menu.default) menu.draw(menu.default)
local autoboot_key = menu.autoboot()
local autoboot_key = menu.autoboot(delay)
menu.process(menu.default, autoboot_key) menu.process(menu.default, autoboot_key)
drawn_menu = nil drawn_menu = nil
@ -411,19 +425,15 @@ function menu.run()
print("Exiting menu!") print("Exiting menu!")
end end
function menu.autoboot() function menu.autoboot(delay)
local ab = loader.getenv("autoboot_delay") -- If we've specified a nil delay, we can do nothing but assume that
if ab ~= nil and ab:lower() == "no" then -- we aren't supposed to be autobooting.
if delay == nil then
return nil return nil
elseif tonumber(ab) == -1 then
core.boot()
end end
ab = tonumber(ab) or 10
local x = loader.getenv("loader_menu_timeout_x") or 4 local x = loader.getenv("loader_menu_timeout_x") or 4
local y = loader.getenv("loader_menu_timeout_y") or 23 local y = loader.getenv("loader_menu_timeout_y") or 23
local endtime = loader.time() + delay
local endtime = loader.time() + ab
local time local time
local last local last
repeat repeat