diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2019-07-12 11:17:20 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2019-07-12 13:52:33 -0400 |
commit | 977d0cf7117cb04902a2189321f2e40a20f9488b (patch) | |
tree | 721468750674713b12196be8a7eb4850d1f9d06f | |
parent | bc78bc486477b37ad137462cd5fffe8dd9be2738 (diff) | |
download | kutter-977d0cf7117cb04902a2189321f2e40a20f9488b.tar.gz kutter-977d0cf7117cb04902a2189321f2e40a20f9488b.tar.xz kutter-977d0cf7117cb04902a2189321f2e40a20f9488b.zip |
toolhead: Delay calculating homing print_time until ready to move
If the homing move is exceptionally long, it could take a long time
for the host to process the look-ahead queue. Delay the print_time
calculation until moves are ready to be sent.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r-- | klippy/toolhead.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/klippy/toolhead.py b/klippy/toolhead.py index a97cc440..d6665bbf 100644 --- a/klippy/toolhead.py +++ b/klippy/toolhead.py @@ -244,6 +244,7 @@ class ToolHead: self.idle_flush_print_time = 0. self.print_stall = 0 self.drip_completion = None + self.drip_need_calc_print_time = False # Setup iterative solver ffi_main, ffi_lib = chelper.get_ffi() self.cmove = ffi_main.gc(ffi_lib.move_alloc(), ffi_lib.free) @@ -292,6 +293,9 @@ class ToolHead: return self.print_time if self.special_queuing_state == "Drip": # In "Drip" state - wait until ready to send next move + if self.drip_need_calc_print_time: + self.drip_need_calc_print_time = False + self._calc_print_time() while 1: if self.drip_completion.test(): raise DripModeEndSignal() @@ -434,6 +438,7 @@ class ToolHead: self.reactor.update_timer(self.flush_timer, self.reactor.NEVER) self.move_queue.set_flush_time(self.reactor.NEVER) self.drip_completion = self.reactor.completion() + self.drip_need_calc_print_time = True # Split move into many tiny moves and queue them num_moves = max(1, int(math.ceil(move.min_move_t / DRIP_SEGMENT_TIME))) inv_num_moves = 1. / float(num_moves) @@ -445,7 +450,6 @@ class ToolHead: prev_pos = next_pos self.move_queue.add_move(Move(self, prev_pos, move.end_pos, speed)) # Transmit moves - self._calc_print_time() try: self.move_queue.flush() except DripModeEndSignal as e: |