[core] make bumblebee more reactive
- set default delay to 0 - split input reading into 2 threads - get rid of polling
This commit is contained in:
parent
868502d62e
commit
9f89e3a657
3 changed files with 45 additions and 40 deletions
|
@ -8,6 +8,13 @@ def register(event, callback, *args, **kwargs):
|
|||
|
||||
__callbacks.setdefault(event, []).append(cb)
|
||||
|
||||
def register_exclusive(event, callback, *args, **kwargs):
|
||||
cb = callback
|
||||
if args or kwargs:
|
||||
cb = lambda: callback(*args, **kwargs)
|
||||
|
||||
__callbacks[event] = [cb]
|
||||
|
||||
def unregister(event):
|
||||
if event in __callbacks:
|
||||
del __callbacks[event]
|
||||
|
|
|
@ -52,9 +52,9 @@ def register(obj, button=None, cmd=None, wait=False):
|
|||
logging.debug("registering callback {}".format(event_id))
|
||||
core.event.unregister(event_id) # make sure there's always only one input event
|
||||
if callable(cmd):
|
||||
core.event.register(event_id, cmd)
|
||||
core.event.register_exclusive(event_id, cmd)
|
||||
else:
|
||||
core.event.register(event_id, lambda event: __execute(event, cmd, wait))
|
||||
core.event.register_exclusive(event_id, lambda event: __execute(event, cmd, wait))
|
||||
|
||||
|
||||
def trigger(event):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue