mirror of
https://github.com/jeertmans/manim-slides.git
synced 2025-07-04 07:27:00 +08:00
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.
This commit is contained in:
@ -4,7 +4,7 @@ from typing import Optional
|
|||||||
|
|
||||||
from qtpy.QtCore import Qt, QTimer, QUrl, Signal, Slot
|
from qtpy.QtCore import Qt, QTimer, QUrl, Signal, Slot
|
||||||
from qtpy.QtGui import QCloseEvent, QIcon, QKeyEvent, QScreen
|
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.QtMultimediaWidgets import QVideoWidget
|
||||||
from qtpy.QtWidgets import (
|
from qtpy.QtWidgets import (
|
||||||
QHBoxLayout,
|
QHBoxLayout,
|
||||||
@ -240,6 +240,18 @@ class Player(QMainWindow): # type: ignore[misc]
|
|||||||
self.presentation_changed.connect(self.presentation_changed_callback)
|
self.presentation_changed.connect(self.presentation_changed_callback)
|
||||||
self.slide_changed.connect(self.slide_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(
|
self.info = Info(
|
||||||
full_screen=full_screen,
|
full_screen=full_screen,
|
||||||
aspect_ratio_mode=aspect_ratio_mode,
|
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.close_event.connect(self.closeEvent)
|
||||||
self.info.key_press_event.connect(self.keyPressEvent)
|
self.info.key_press_event.connect(self.keyPressEvent)
|
||||||
self.video_sink.videoFrameChanged.connect(
|
self.video_sink.videoFrameChanged.connect(
|
||||||
lambda frame: self.info.video_sink.setVideoFrame(frame)
|
frame_changed
|
||||||
)
|
)
|
||||||
self.hide_info_window = hide_info_window
|
self.hide_info_window = hide_info_window
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ manim = ["manim>=0.18.0"]
|
|||||||
manimgl = ["manimgl>=1.6.1;python_version<'3.12'"]
|
manimgl = ["manimgl>=1.6.1;python_version<'3.12'"]
|
||||||
pyqt6 = ["pyqt6>=6.6.1"]
|
pyqt6 = ["pyqt6>=6.6.1"]
|
||||||
pyqt6-full = ["manim-slides[full,pyqt6]"]
|
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]"]
|
pyside6-full = ["manim-slides[full,pyside6]"]
|
||||||
sphinx-directive = ["docutils>=0.20.1", "manim-slides[manim]"]
|
sphinx-directive = ["docutils>=0.20.1", "manim-slides[manim]"]
|
||||||
tests = [
|
tests = [
|
||||||
|
Reference in New Issue
Block a user