Skip to content

Commit fa090da

Browse files
committed
adds guard to the task handler
1 parent 5ec167e commit fa090da

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

api_drivers/common_api_drivers/frozen/other/task_handler.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def __init__(
6060
callback=self._timer_cb
6161
)
6262
self._scheduled = 0
63+
self._running = False
6364

6465
def add_event_cb(self, callback, event, user_data=_DefaultUserData):
6566
for i, (cb, evt, data) in enumerate(self._callbacks):
@@ -101,6 +102,8 @@ def _task_handler(self, _):
101102
self._scheduled -= 1
102103

103104
if lv._nesting.value == 0:
105+
self._running = True
106+
104107
run_update = True
105108
for cb, evt, data in self._callbacks:
106109
if not evt ^ TASK_HANDLER_STARTED:
@@ -148,12 +151,19 @@ def _task_handler(self, _):
148151
ticks_diff = time.ticks_diff(stop_time, start_time)
149152
lv.tick_inc(ticks_diff)
150153

154+
self._running = False
155+
151156
except Exception as e:
157+
self._running = False
158+
152159
if self.exception_hook:
153160
self.exception_hook(e)
154161

155162
def _timer_cb(self, _):
156163
lv.tick_inc(self.duration)
164+
if self._running:
165+
return
166+
157167
if self._scheduled < self.max_scheduled:
158168
try:
159169
micropython.schedule(self._task_handler_ref, 0)

0 commit comments

Comments
 (0)