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)