summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--player/lua/defaults.lua14
1 files changed, 11 insertions, 3 deletions
diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua
index 29e513f4ea..ba59653828 100644
--- a/player/lua/defaults.lua
+++ b/player/lua/defaults.lua
@@ -132,8 +132,14 @@ end
local key_bindings = {}
local key_binding_counter = 0
+local key_bindings_dirty = false
+
+function mp.flush_keybindings()
+ if not key_bindings_dirty then
+ return
+ end
+ key_bindings_dirty = false
-local function update_key_bindings()
for i = 1, 2 do
local section, flags
local def = i == 1
@@ -229,7 +235,7 @@ local function add_binding(attrs, key, name, fn, rp)
key_binding_counter = key_binding_counter + 1
attrs.priority = key_binding_counter
key_bindings[name] = attrs
- update_key_bindings()
+ key_bindings_dirty = true
dispatch_key_bindings[name] = key_cb
mp.register_script_message(name, msg_cb)
end
@@ -245,7 +251,7 @@ end
function mp.remove_key_binding(name)
key_bindings[name] = nil
dispatch_key_bindings[name] = nil
- update_key_bindings()
+ key_bindings_dirty = true
mp.unregister_script_message(name)
end
@@ -517,6 +523,8 @@ function mp.dispatch_events(allow_wait)
end
end
+mp.register_idle(mp.flush_keybindings)
+
-- additional helpers
function mp.osd_message(text, duration)