Merge pull request #2543 from Ultimaker/CL-511_abort_crash

CL-511 fix abort crash
This commit is contained in:
jack 2017-10-02 16:51:46 +02:00 committed by GitHub
commit dfe4a76e85

View File

@ -277,7 +277,10 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
self._file_name = "%s.gcode.gz" % file_name self._file_name = "%s.gcode.gz" % file_name
self._showProgressMessage() self._showProgressMessage()
self._request = self._buildSendPrintJobHttpRequest(require_printer_name) new_request = self._buildSendPrintJobHttpRequest(require_printer_name)
if new_request is None or self._stage != OutputStage.uploading:
return
self._request = new_request
self._reply = self._manager.post(self._request, self._multipart) self._reply = self._manager.post(self._request, self._multipart)
self._reply.uploadProgress.connect(self._onUploadProgress) self._reply.uploadProgress.connect(self._onUploadProgress)
# See _finishedPostPrintJobRequest() # See _finishedPostPrintJobRequest()
@ -296,7 +299,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list") gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list")
compressed_gcode = self._compressGcode(gcode) compressed_gcode = self._compressGcode(gcode)
if compressed_gcode is None: if compressed_gcode is None:
return # User aborted print, so stop trying. return None # User aborted print, so stop trying.
part.setBody(compressed_gcode) part.setBody(compressed_gcode)
self._multipart.append(part) self._multipart.append(part)
@ -333,7 +336,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
for line in gcode: for line in gcode:
if not self._compressing_print: if not self._compressing_print:
self._progress_message.hide() self._progress_message.hide()
return # Stop trying to zip, abort was called. return None # Stop trying to zip, abort was called.
batched_line += line batched_line += line
# if the gcode was read from a gcode file, self._gcode will be a list of all lines in that file. # if the gcode was read from a gcode file, self._gcode will be a list of all lines in that file.
# Compressing line by line in this case is extremely slow, so we need to batch them. # Compressing line by line in this case is extremely slow, so we need to batch them.
@ -628,9 +631,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
request.setRawHeader(b"User-agent", b"CuraPrintClusterOutputDevice Plugin") request.setRawHeader(b"User-agent", b"CuraPrintClusterOutputDevice Plugin")
def _cleanupRequest(self): def _cleanupRequest(self):
self._reply = None
self._request = None self._request = None
self._multipart = None
self._stage = OutputStage.ready self._stage = OutputStage.ready
self._file_name = None self._file_name = None
@ -683,10 +684,9 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
Logger.log("d", "User aborted sending print to remote.") Logger.log("d", "User aborted sending print to remote.")
self._progress_message.hide() self._progress_message.hide()
self._compressing_print = False self._compressing_print = False
self._stage = OutputStage.ready
if self._reply: if self._reply:
self._reply.abort() self._reply.abort()
self._reply = None self._stage = OutputStage.ready
Application.getInstance().showPrintMonitor.emit(False) Application.getInstance().showPrintMonitor.emit(False)
@pyqtSlot(int, result=str) @pyqtSlot(int, result=str)