|
@@ -696,13 +696,24 @@ class MainWindow(QMainWindow):
|
|
|
player.frame_ready.connect(label.setPixmap)
|
|
player.frame_ready.connect(label.setPixmap)
|
|
|
player.first_frame_received.connect(lambda: self._on_rtsp_retry_success(side))
|
|
player.first_frame_received.connect(lambda: self._on_rtsp_retry_success(side))
|
|
|
player.timeout.connect(lambda: self.on_player_timeout(label, player, side))
|
|
player.timeout.connect(lambda: self.on_player_timeout(label, player, side))
|
|
|
|
|
+ old = self.left_player if side == "left" else self.right_player
|
|
|
|
|
+ if old:
|
|
|
|
|
+ try:
|
|
|
|
|
+ old.frame_ready.disconnect()
|
|
|
|
|
+ except TypeError:
|
|
|
|
|
+ pass
|
|
|
|
|
+ try:
|
|
|
|
|
+ old.first_frame_received.disconnect()
|
|
|
|
|
+ except TypeError:
|
|
|
|
|
+ pass
|
|
|
|
|
+ try:
|
|
|
|
|
+ old.timeout.disconnect()
|
|
|
|
|
+ except TypeError:
|
|
|
|
|
+ pass
|
|
|
|
|
+ old.stop()
|
|
|
if side == "left":
|
|
if side == "left":
|
|
|
- if self.left_player:
|
|
|
|
|
- self.left_player.stop()
|
|
|
|
|
self.left_player = player
|
|
self.left_player = player
|
|
|
else:
|
|
else:
|
|
|
- if self.right_player:
|
|
|
|
|
- self.right_player.stop()
|
|
|
|
|
self.right_player = player
|
|
self.right_player = player
|
|
|
player.start()
|
|
player.start()
|
|
|
|
|
|
|
@@ -786,12 +797,24 @@ class MainWindow(QMainWindow):
|
|
|
self._cancel_rtsp_retry("right")
|
|
self._cancel_rtsp_retry("right")
|
|
|
if bucket and self.voice_enabled:
|
|
if bucket and self.voice_enabled:
|
|
|
self._speak(f"到达{bucket.description}")
|
|
self._speak(f"到达{bucket.description}")
|
|
|
- if self.left_player:
|
|
|
|
|
- self.left_player.stop()
|
|
|
|
|
- self.left_player = None
|
|
|
|
|
- if self.right_player:
|
|
|
|
|
- self.right_player.stop()
|
|
|
|
|
- self.right_player = None
|
|
|
|
|
|
|
+ for player in (self.left_player, self.right_player):
|
|
|
|
|
+ if player is None:
|
|
|
|
|
+ continue
|
|
|
|
|
+ try:
|
|
|
|
|
+ player.frame_ready.disconnect()
|
|
|
|
|
+ except TypeError:
|
|
|
|
|
+ pass
|
|
|
|
|
+ try:
|
|
|
|
|
+ player.first_frame_received.disconnect()
|
|
|
|
|
+ except TypeError:
|
|
|
|
|
+ pass
|
|
|
|
|
+ try:
|
|
|
|
|
+ player.timeout.disconnect()
|
|
|
|
|
+ except TypeError:
|
|
|
|
|
+ pass
|
|
|
|
|
+ player.stop()
|
|
|
|
|
+ self.left_player = None
|
|
|
|
|
+ self.right_player = None
|
|
|
if self.active_bucket:
|
|
if self.active_bucket:
|
|
|
self.active_bucket.is_active = False
|
|
self.active_bucket.is_active = False
|
|
|
self.active_bucket = bucket
|
|
self.active_bucket = bucket
|