|
@@ -1263,7 +1263,18 @@ class MainWindow(QMainWindow):
|
|
|
self.camera_signal_signal.emit(results)
|
|
self.camera_signal_signal.emit(results)
|
|
|
|
|
|
|
|
def _on_camera_signal(self, results: dict):
|
|
def _on_camera_signal(self, results: dict):
|
|
|
|
|
+ was_offline = {ip for ip, lat in self._camera_signal.items() if lat is not None and lat < 0}
|
|
|
self._camera_signal.update(results)
|
|
self._camera_signal.update(results)
|
|
|
|
|
+ now_online = {ip for ip, lat in results.items() if lat >= 0}
|
|
|
|
|
+ revived = now_online & was_offline
|
|
|
|
|
+ if revived and self.active_bucket:
|
|
|
|
|
+ for cam in self.active_bucket.cameras:
|
|
|
|
|
+ m = re.search(r'rtsp://(?:[^@]+@)?([^:/]+)', cam.rtsp_url)
|
|
|
|
|
+ if m and m.group(1) in revived:
|
|
|
|
|
+ side = "left" if cam.position == CameraPosition.LEFT else "right"
|
|
|
|
|
+ cur = self.left_player if side == "left" else self.right_player
|
|
|
|
|
+ if cur is None:
|
|
|
|
|
+ self._retry_rtsp(side)
|
|
|
for bucket in self.buckets:
|
|
for bucket in self.buckets:
|
|
|
bars = self._bucket_signal_labels.get(bucket.id)
|
|
bars = self._bucket_signal_labels.get(bucket.id)
|
|
|
if not bars:
|
|
if not bars:
|