mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-10-26 00:36:08 +02:00
gcode_macro: Verify nothing attempts to pause in a get_status() callback
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -24,9 +24,12 @@ class GetStatusWrapper:
|
||||
po = self.printer.lookup_object(sval, None)
|
||||
if po is None or not hasattr(po, 'get_status'):
|
||||
raise KeyError(val)
|
||||
reactor = self.printer.get_reactor()
|
||||
if self.eventtime is None:
|
||||
self.eventtime = self.printer.get_reactor().monotonic()
|
||||
self.cache[sval] = res = copy.deepcopy(po.get_status(self.eventtime))
|
||||
self.eventtime = reactor.monotonic()
|
||||
with reactor.assert_no_pause():
|
||||
sts = po.get_status(self.eventtime)
|
||||
self.cache[sval] = res = copy.deepcopy(sts)
|
||||
return res
|
||||
def __contains__(self, val):
|
||||
try:
|
||||
|
||||
@@ -491,6 +491,8 @@ class QueryStatusHelper:
|
||||
self.pending_queries = []
|
||||
msglist.extend(self.clients.values())
|
||||
# Generate get_status() info for each client
|
||||
reactor = self.printer.get_reactor()
|
||||
with reactor.assert_no_pause():
|
||||
for cconn, subscription, send_func, template in msglist:
|
||||
is_query = cconn is None
|
||||
if not is_query and cconn.is_closed():
|
||||
@@ -525,7 +527,6 @@ class QueryStatusHelper:
|
||||
send_func(tmp)
|
||||
if not query:
|
||||
# Unregister timer if there are no longer any subscriptions
|
||||
reactor = self.printer.get_reactor()
|
||||
reactor.unregister_timer(self.query_timer)
|
||||
self.query_timer = None
|
||||
return reactor.NEVER
|
||||
|
||||
Reference in New Issue
Block a user