mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-03-28 22:15:42 +00:00
add counter to time_queue, kill gens with close()
This commit is contained in:
parent
0f74597215
commit
ef44e9ded8
@ -17,6 +17,7 @@ event_handlers = {
|
|||||||
MESSAGE: None,
|
MESSAGE: None,
|
||||||
}
|
}
|
||||||
time_queue = []
|
time_queue = []
|
||||||
|
schedule_ctr = 0
|
||||||
|
|
||||||
if __debug__:
|
if __debug__:
|
||||||
# For performance stats
|
# For performance stats
|
||||||
@ -27,16 +28,15 @@ if __debug__:
|
|||||||
|
|
||||||
|
|
||||||
def __schedule(gen, args=(), time=None):
|
def __schedule(gen, args=(), time=None):
|
||||||
if __debug__:
|
global schedule_ctr
|
||||||
log.debug(__name__, 'Scheduling %s %s', time, gen)
|
|
||||||
|
|
||||||
if not time:
|
if not time:
|
||||||
time = utime.ticks_us()
|
time = utime.ticks_us()
|
||||||
|
heappush(time_queue, (time, schedule_ctr, gen, args))
|
||||||
heappush(time_queue, (time, gen, args))
|
schedule_ctr += 1
|
||||||
|
|
||||||
|
|
||||||
class Wait():
|
class Wait():
|
||||||
|
|
||||||
def __init__(self, gens, wait_for=1, exit_others=True):
|
def __init__(self, gens, wait_for=1, exit_others=True):
|
||||||
self.wait_for = wait_for
|
self.wait_for = wait_for
|
||||||
self.exit_others = exit_others
|
self.exit_others = exit_others
|
||||||
@ -64,10 +64,8 @@ class Wait():
|
|||||||
|
|
||||||
if self.exit_others:
|
if self.exit_others:
|
||||||
for g in self.gens:
|
for g in self.gens:
|
||||||
try:
|
if isinstance(gen, type_gen):
|
||||||
g.throw(StopIteration())
|
g.close()
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def sleep(us):
|
def sleep(us):
|
||||||
@ -88,7 +86,7 @@ def run_forever(start_gens):
|
|||||||
while True:
|
while True:
|
||||||
|
|
||||||
if time_queue:
|
if time_queue:
|
||||||
t, _, _ = time_queue[0]
|
t, _, _, _ = time_queue[0]
|
||||||
delay = t - utime.ticks_us()
|
delay = t - utime.ticks_us()
|
||||||
else:
|
else:
|
||||||
delay = delay_max
|
delay = delay_max
|
||||||
@ -112,7 +110,7 @@ def run_forever(start_gens):
|
|||||||
else:
|
else:
|
||||||
if time_queue:
|
if time_queue:
|
||||||
# Run something from the time queue
|
# Run something from the time queue
|
||||||
_, gen, args = heappop(time_queue)
|
_, _, gen, args = heappop(time_queue)
|
||||||
else:
|
else:
|
||||||
# Sleep again
|
# Sleep again
|
||||||
delay = delay_max
|
delay = delay_max
|
||||||
|
Loading…
Reference in New Issue
Block a user