Fix saccades LV + distorsion pellicule + draw_capture plein ecran

- Supprime sleep(0.3) apres chaque capture_preview() reussi
  (limitait le live view a ~3fps, cause principale des saccades)
- Fixe crash silencieux thread camera : _nb_retry non initialise
  pour errs 1-4 (NameError) -> restructure en for/else propre
- Pellicule live view : _pfit() au lieu de transform.scale() -> plus de distorsion
- draw_capture() : mode pellicule affiché au lieu de fullscreen black

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-15 11:15:46 +02:00
parent 9c57c8f5f2
commit 529cb41581

View File

@@ -828,9 +828,7 @@ class PB:
if self.cam: self.cam.exit()
except: pass
self.cam = None; errs = 0
_nb_retry = 0
while _nb_retry < 10:
_nb_retry += 1
for _nb_retry in range(10):
time.sleep(3)
_usb_reset_done()
try:
@@ -839,14 +837,13 @@ class PB:
print("Caméra reconnectée automatiquement")
break
except Exception as re:
print(f"Reconnexion échouée ({_nb_retry}): {re}")
print(f"Reconnexion échouée ({_nb_retry+1}): {re}")
else:
# 10 tentatives échouées → bascule en simulation
self.sim = True
print("Caméra introuvable → mode simulation")
errs = 0
else:
time.sleep(0.3)
time.sleep(0.1)
else:
time.sleep(0.05)
@@ -1249,7 +1246,7 @@ class PB:
else:
with self.flock:
if self.frame:
lv = pygame.transform.scale(self.frame, (fw, fh))
lv = _pfit(self.frame, fw, fh)
self.scr.blit(lv, (fx, fy))
else:
pygame.draw.rect(self.scr, (25, 25, 25), (fx, fy, fw, fh))
@@ -1354,6 +1351,10 @@ class PB:
self.scr.blit(info,(W//2-info.get_width()//2,H-90))
def draw_capture(self):
if self._is_pell():
self._draw_pellicule(show_live=False)
self._overlay(70)
else:
self._lv(); self._overlay(90)
s=self._txt("Prise de vue...","md"); self._c(s,H//2-s.get_height()//2)