Prevent a possible memory leak while showing a stuck camera stream

This commit is contained in:
fieldOfView 2017-09-04 15:47:44 +02:00
parent 20ffb0cd6d
commit 7e60d459b4

View File

@ -326,6 +326,9 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
return True
def _stopCamera(self):
self._stream_buffer = b""
self._stream_buffer_start_index = -1
if self._camera_timer.isActive():
self._camera_timer.stop()
if self._image_reply:
@ -1165,6 +1168,12 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
return
self._stream_buffer += self._image_reply.readAll()
if len(self._stream_buffer) > 2000000: # No single camera frame should be 2 Mb or larger
Logger.log("w", "MJPEG buffer exceeds reasonable size. Restarting stream...")
self._stopCamera() # resets stream buffer and start index
self._startCamera()
return
if self._stream_buffer_start_index == -1:
self._stream_buffer_start_index = self._stream_buffer.indexOf(b'\xff\xd8')
stream_buffer_end_index = self._stream_buffer.lastIndexOf(b'\xff\xd9')