From 517fbc62408bba06e52f57fe3b57d23254f6e907 Mon Sep 17 00:00:00 2001 From: PeculiarProgrammer <179261820+PeculiarProgrammer@users.noreply.github.com> Date: Fri, 23 Aug 2024 17:05:27 -0400 Subject: [PATCH] Fix for #293 and similar errors This commit fixes the screen going black after the video ends in versions of PySide6 v6.5.3 and newer. This allows for other errors (like #315) that require a newer version of PySide6 to also be fixed. --- manim_slides/present/player.py | 16 ++++++++++++++-- pyproject.toml | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/manim_slides/present/player.py b/manim_slides/present/player.py index 150b4d0..3db153a 100644 --- a/manim_slides/present/player.py +++ b/manim_slides/present/player.py @@ -4,7 +4,7 @@ from typing import Optional from qtpy.QtCore import Qt, QTimer, QUrl, Signal, Slot from qtpy.QtGui import QCloseEvent, QIcon, QKeyEvent, QScreen -from qtpy.QtMultimedia import QAudioOutput, QMediaPlayer +from qtpy.QtMultimedia import QAudioOutput, QMediaPlayer, QVideoFrame from qtpy.QtMultimediaWidgets import QVideoWidget from qtpy.QtWidgets import ( QHBoxLayout, @@ -240,6 +240,18 @@ class Player(QMainWindow): # type: ignore[misc] self.presentation_changed.connect(self.presentation_changed_callback) self.slide_changed.connect(self.slide_changed_callback) + old_frame = None + + def frame_changed(frame: QVideoFrame) -> None: + nonlocal old_frame + + if old_frame and (frame.size() != old_frame.size()): + self.video_sink.setVideoFrame(old_frame) + frame = old_frame + + self.info.video_sink.setVideoFrame(frame) + old_frame = frame + self.info = Info( full_screen=full_screen, aspect_ratio_mode=aspect_ratio_mode, @@ -248,7 +260,7 @@ class Player(QMainWindow): # type: ignore[misc] self.info.close_event.connect(self.closeEvent) self.info.key_press_event.connect(self.keyPressEvent) self.video_sink.videoFrameChanged.connect( - lambda frame: self.info.video_sink.setVideoFrame(frame) + frame_changed ) self.hide_info_window = hide_info_window diff --git a/pyproject.toml b/pyproject.toml index ae0ad5b..11ccbe1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,7 +62,7 @@ manim = ["manim>=0.18.0"] manimgl = ["manimgl>=1.6.1;python_version<'3.12'"] pyqt6 = ["pyqt6>=6.6.1"] pyqt6-full = ["manim-slides[full,pyqt6]"] -pyside6 = ["pyside6>=6.5.1,<6.5.3;python_version<'3.12'", "pyside6>=6.6.1;python_version>='3.12'"] +pyside6 = ["pyside6>=6.6.1"] pyside6-full = ["manim-slides[full,pyside6]"] sphinx-directive = ["docutils>=0.20.1", "manim-slides[manim]"] tests = [