diff --git a/python/src/deltachat/events.py b/python/src/deltachat/events.py index 6db3de61e..975d4e451 100644 --- a/python/src/deltachat/events.py +++ b/python/src/deltachat/events.py @@ -247,17 +247,18 @@ class EventThread(threading.Thread): def run(self) -> None: """get and run events until shutdown.""" with self.log_execution("EVENT THREAD"): - self._inner_run() + event_emitter = ffi.gc( + lib.dc_get_event_emitter(self.account._dc_context), + lib.dc_event_emitter_unref, + ) + while not self._marked_for_shutdown: + with self.swallow_and_log_exception("Unexpected error in event thread"): + event = lib.dc_get_next_event(event_emitter) + if event == ffi.NULL or self._marked_for_shutdown: + break + self._process_event(event) - def _inner_run(self): - event_emitter = ffi.gc( - lib.dc_get_event_emitter(self.account._dc_context), - lib.dc_event_emitter_unref, - ) - while not self._marked_for_shutdown: - event = lib.dc_get_next_event(event_emitter) - if event == ffi.NULL or self._marked_for_shutdown: - break + def _process_event(self, event) -> None: evt = lib.dc_event_get_id(event) data1 = lib.dc_event_get_data1_int(event) # the following code relates to the deltachat/_build.py's helper