[core] fix concurrency issues

* initialize first line of output earlier (before modules are
  initialized, so that module/thread output cannot interfere)
* make sure that update and draw are protected against concurrent access
This commit is contained in:
tobi-wan-kenobi 2022-09-09 20:58:59 +02:00
parent 28601cf2b7
commit f4bd0fba0b
2 changed files with 19 additions and 9 deletions

View file

@ -75,6 +75,8 @@ def handle_events(config, update_lock):
def main():
global started
config = core.config.Config(sys.argv[1:])
level = logging.DEBUG if config.debug() else logging.ERROR
if config.logfile():
@ -97,6 +99,8 @@ def main():
core.input.register(None, core.input.WHEEL_UP, "i3-msg workspace prev_on_output")
core.input.register(None, core.input.WHEEL_DOWN, "i3-msg workspace next_on_output")
core.event.trigger("start")
update_lock = threading.Lock()
event_thread = threading.Thread(target=handle_events, args=(config, update_lock, ))
event_thread.daemon = True
@ -127,7 +131,6 @@ def main():
if util.format.asbool(config.get("engine.collapsible", True)) == True:
core.input.register(None, core.input.MIDDLE_MOUSE, output.toggle_minimize)
core.event.trigger("start")
started = True
signal.signal(10, sig_USR1_handler)
while True: