From 064efb20e02c6300f04f559545a42c31881e4de1 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <sourcetree@thinkyhead.com>
Date: Tue, 31 May 2016 17:41:32 -0700
Subject: [PATCH] Also call clear_command_queue for lcd_sdcard_stop

---
 Marlin/Marlin.h        | 1 +
 Marlin/Marlin_main.cpp | 5 +++++
 Marlin/ultralcd.cpp    | 1 +
 3 files changed, 7 insertions(+)

diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index ee2453615c..837f1b5d81 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -254,6 +254,7 @@ inline bool IsStopped() { return !Running; }
 bool enqueue_and_echo_command(const char* cmd, bool say_ok=false); //put a single ASCII command at the end of the current buffer or return false when it is full
 void enqueue_and_echo_command_now(const char* cmd); // enqueue now, only return when the command has been enqueued
 void enqueue_and_echo_commands_P(const char* cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
+void clear_command_queue();
 
 void clamp_to_software_endstops(float target[3]);
 
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 53053221f2..1e98877bec 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -613,6 +613,11 @@ void enqueue_and_echo_commands_P(const char* pgcode) {
   drain_queued_commands_P(); // first command executed asap (when possible)
 }
 
+void clear_command_queue() {
+  cmd_queue_index_r = cmd_queue_index_w;
+  commands_in_queue = 0;
+}
+
 /**
  * Once a new command is in the ring buffer, call this to commit it
  */
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index 9080f7e1c0..c1526e4a44 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -483,6 +483,7 @@ inline void line_to_current(AxisEnum axis) {
   static void lcd_sdcard_stop() {
     stepper.quick_stop();
     set_current_position_from_planner();
+    clear_command_queue();
     card.sdprinting = false;
     card.closefile();
     print_job_timer.stop();