Release 5.5.0

Also stops one benign libmpv message being logged as an error: `after
creating texture: OpenGL error INVALID_ENUM` comes from the GL driver, arrives
several times per playback start and per fullscreen toggle, and playback
continues regardless. Hundreds of lines a session buried the errors that
matter -- it is a debug line now.

Verified end to end on the real display with an actual video playing: ten tab
switches and four fullscreen toggles while frames were rendering, position
advancing throughout, the render context intact, no crash, and an empty error
log afterwards.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-09 01:18:43 +02:00
parent fd744a1a85
commit 9c4749e49b
4 changed files with 22 additions and 6 deletions
+15 -3
View File
@@ -281,13 +281,25 @@ class MpvRenderWidget(QOpenGLWidget):
if value is not None:
self.mpvBufferingChanged.emit(bool(value))
#: libmpv reports these at error level, but they are noise from the GL
#: driver rather than a failure: playback continues and frames keep
#: arriving. They were filling the error log with hundreds of lines per
#: session, which buries the errors that do matter.
_BENIGN_MPV_ERRORS = (
"after creating texture: OpenGL error INVALID_ENUM",
)
def _on_mpv_log(self, level: str, prefix: str, text: str) -> None:
message = text.strip()
if level in ("error", "fatal"):
logger.error(f"mpv [{prefix}] {text.strip()}")
if level == "error" and any(noise in message for noise in self._BENIGN_MPV_ERRORS):
logger.debug(f"mpv [{prefix}] {message}")
return
logger.error(f"mpv [{prefix}] {message}")
if "ytdl" in prefix or level == "fatal":
self.mpvError.emit(text.strip())
self.mpvError.emit(message)
else:
logger.debug(f"mpv [{prefix}] {text.strip()}")
logger.debug(f"mpv [{prefix}] {message}")
# --------------------------------------------------------------- OpenGL