summaryrefslogtreecommitdiffstats
path: root/mpvcore/lua/osc.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mpvcore/lua/osc.lua')
-rw-r--r--mpvcore/lua/osc.lua33
1 files changed, 14 insertions, 19 deletions
diff --git a/mpvcore/lua/osc.lua b/mpvcore/lua/osc.lua
index d3deb97ac9..3ce66df2d9 100644
--- a/mpvcore/lua/osc.lua
+++ b/mpvcore/lua/osc.lua
@@ -18,7 +18,7 @@ local user_opts = {
vidscale = true, -- scale the controller with the video?
valign = 0.8, -- vertical alignment, -1 (top) to 1 (bottom)
halign = 0, -- horizontal alignment, -1 (left) to 1 (right)
- hidetimeout = 500, -- duration in ms until the OSC hides if no mouse movement
+ hidetimeout = 500, -- duration in ms until the OSC hides if no mouse movement, negative value disables autohide
fadeduration = 200, -- duration of fade out in ms, 0 = no fade
deadzonesize = 0, -- size of deadzone
minmousemove = 3, -- minimum amount of pixeles the mouse has to move between ticks to make the OSC show up
@@ -121,16 +121,7 @@ function read_config(options, identifier)
local conffile = mp.find_config_file(conffilename)
local f = io.open(conffile,"r")
if f == nil then
- msg.info(conffile.." does not exist, creating it ...")
- -- so create it, write default options
- local f = io.open(conffile,"w+")
- f:write("# Config file for "..identifier.."\n# <-- works only at beginning of line.\n# Do not have any spare spaces flying around.\n\n")
- -- iterate over the options table
- for key, value in pairs(options) do
- f:write("#" .. key .. "=" .. val2str(value) .. "\n")
- end
- io.close(f)
-
+ -- config not found
else
-- config exists, read values
local linecounter = 1
@@ -1042,13 +1033,13 @@ function render()
local mouseX, mouseY = mp.get_mouse_pos()
local now = mp.get_timer()
+ -- check if display changed, if so request reinit
if not (state.mp_screen_sizeX == current_screen_sizeX and state.mp_screen_sizeY == current_screen_sizeY) then
- -- display changed, reinit everything
request_init()
state.mp_screen_sizeX, state.mp_screen_sizeY = current_screen_sizeX, current_screen_sizeY
end
-
+ -- init management
if state.initREQ then
osc_init()
state.initREQ = false
@@ -1059,22 +1050,21 @@ function render()
end
end
-
-
+ -- autohide
if not (state.showtime == nil) and (user_opts.hidetimeout >= 0) and (state.showtime + (user_opts.hidetimeout/1000) < now) and (state.active_element == nil)
and not (mouseX >= osc_param.posX - (osc_param.osc_w / 2) and mouseX <= osc_param.posX + (osc_param.osc_w / 2)
and mouseY >= osc_param.posY - (osc_param.osc_h / 2) and mouseY <= osc_param.posY + (osc_param.osc_h / 2)) then
hide_osc()
end
-
+ -- fade animation
if not(state.anitype == nil) then
if (state.anistart == nil) then
state.anistart = now
end
- if (now < state.anistart + (user_opts.fadeduration/1000) ) then
+ if (now < state.anistart + (user_opts.fadeduration/1000)) then
if (state.anitype == "in") then --fade in
state.osc_visible = true
@@ -1095,14 +1085,18 @@ function render()
state.anitype = nil
end
+ -- actual rendering
local ass = assdraw.ass_new()
+ -- Messages
render_message(ass)
+ -- actual OSC
if state.osc_visible then
render_elements(ass)
end
+ -- submit
local w, h, aspect = mp.get_screen_size()
mp.set_osd_ass(osc_param.playresy * aspect, osc_param.playresy, ass.text)
@@ -1182,7 +1176,9 @@ function process_event(source, what)
elseif source == "mouse_move" then
local mouseX, mouseY = mp.get_mouse_pos()
- if (math.abs(mouseX - state.last_mouseX) >= user_opts.minmousemove) or (math.abs(mouseY - state.last_mouseY) >= user_opts.minmousemove) then
+ if (user_opts.minmousemove == 0)
+ or ((math.abs(mouseX - state.last_mouseX) >= user_opts.minmousemove)
+ or (math.abs(mouseY - state.last_mouseY) >= user_opts.minmousemove)) then
show_osc()
end
state.last_mouseX, state.last_mouseY = mouseX, mouseY
@@ -1201,7 +1197,6 @@ function process_event(source, what)
end
-- called by mpv on every frame
-
function tick()
if (mp.property_get("fullscreen") == "yes" and user_opts.showFullscreen) or (mp.property_get("fullscreen") == "no" and user_opts.showWindowed) then
render()