Better handling of GPU preview resizing

This commit is contained in:
Joel Collins 2019-04-14 11:31:48 +01:00
parent 793a3f0b63
commit b7ee18d081

View file

@ -238,9 +238,16 @@ class StreamingCamera(BaseCamera):
self.start_stream_recording() self.start_stream_recording()
try: try:
with self.lock: with self.lock:
self.camera.start_preview(fullscreen=fullscreen, window=window) if not self.camera.preview:
logging.debug("Starting preview")
self.camera.start_preview(fullscreen=fullscreen, window=window)
else:
logging.debug("Resizing preview")
if window:
self.camera.preview.window = window
if fullscreen:
self.camera.preview.fullscreen = fullscreen
self.state['preview_active'] = True self.state['preview_active'] = True
time.sleep(0.2)
except picamera.exc.PiCameraMMALError as e: except picamera.exc.PiCameraMMALError as e:
logging.error("Suppressed a MMALError in start_preview. Exception: {}".format(e)) logging.error("Suppressed a MMALError in start_preview. Exception: {}".format(e))
except picamera.exc.PiCameraValueError as e: except picamera.exc.PiCameraValueError as e:
@ -252,7 +259,6 @@ class StreamingCamera(BaseCamera):
with self.lock: with self.lock:
self.camera.stop_preview() self.camera.stop_preview()
self.state['preview_active'] = False self.state['preview_active'] = False
time.sleep(0.2)
return True return True
def start_recording( def start_recording(