#693 fix crash when using fan kickstart without fan startup time

This commit is contained in:
supermerill 2020-11-21 18:05:24 +01:00
parent 768e7b673a
commit 8f3e0b6fb4

View File

@ -238,14 +238,14 @@ void FanMover::_process_gcode_line(GCodeReader& reader, const GCodeReader::GCode
{ {
fan_speed = get_fan_speed(line.raw(), m_writer.config.gcode_flavor); fan_speed = get_fan_speed(line.raw(), m_writer.config.gcode_flavor);
if (fan_speed > 0 && !m_is_custom_gcode) { if (fan_speed > 0 && !m_is_custom_gcode) {
if (!only_overhangs || current_role != ExtrusionRole::erOverhangPerimeter) { if (nb_seconds_delay > 0 && (!only_overhangs || current_role != ExtrusionRole::erOverhangPerimeter)) {
// this M106 need to go in the past // this M106 need to go in the past
//check if we have !( kickstart and not in slowdown ) //check if we have !( kickstart and not in slowdown )
if (kickstart <= 0 || fan_speed < m_current_fan_speed) { if (kickstart <= 0 || fan_speed < m_current_fan_speed) {
// first erase everything lower that that value // first erase everything lower that that value
_remove_slow_fan(fan_speed, m_buffer_time_size + 1); _remove_slow_fan(fan_speed, m_buffer_time_size + 1);
// then write the fan command // then write the fan command
if (m_buffer_time_size > nb_seconds_delay) { if (std::abs(m_buffer_time_size - nb_seconds_delay) < EPSILON) {
_print_in_middle_G1(m_buffer.front(), m_buffer_time_size - nb_seconds_delay, line.raw()); _print_in_middle_G1(m_buffer.front(), m_buffer_time_size - nb_seconds_delay, line.raw());
remove_from_buffer(m_buffer.begin()); remove_from_buffer(m_buffer.begin());
} else { } else {
@ -274,8 +274,8 @@ void FanMover::_process_gcode_line(GCodeReader& reader, const GCodeReader::GCode
//found, stop //found, stop
break; break;
} }
++it;
time_count -= it->time; time_count -= it->time;
++it;
} }
} }
} else { } else {