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:
+5
-1
@@ -8,7 +8,7 @@ Kept as the work happens, not assembled at release time. Format is
|
|||||||
with its history. SageTube's own versions start below and are the ones this file
|
with its history. SageTube's own versions start below and are the ones this file
|
||||||
records.
|
records.
|
||||||
|
|
||||||
## Unreleased
|
## 5.5.0 — 2026-08-09
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
@@ -88,6 +88,10 @@ records.
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- The error log filled with hundreds of `after creating texture: OpenGL error
|
||||||
|
INVALID_ENUM` lines per session. They come from the GL driver, playback
|
||||||
|
continues regardless, and they buried the errors that do matter, so they are
|
||||||
|
logged at debug level now.
|
||||||
- The player's cookie and proxy options were joined with commas and never
|
- The player's cookie and proxy options were joined with commas and never
|
||||||
escaped, so a cookie path or a proxy URL containing one silently truncated
|
escaped, so a cookie path or a proxy URL containing one silently truncated
|
||||||
the option and produced a bogus one. The geo-bypass proxy was honoured by the
|
the option and produced a bogus one. The geo-bypass proxy was honoured by the
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "sagetube"
|
name = "sagetube"
|
||||||
version = "5.4.0"
|
version = "5.5.0"
|
||||||
description = "Watch-first YouTube client with embedded mpv playback and yt-dlp downloading. Fork of YTSage."
|
description = "Watch-first YouTube client with embedded mpv playback and yt-dlp downloading. Fork of YTSage."
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Houmeres", email = "admin@ecoposta.sk" },
|
{ name = "Houmeres", email = "admin@ecoposta.sk" },
|
||||||
|
|||||||
+1
-1
@@ -10,5 +10,5 @@ match `version` in pyproject.toml and the repository's latest signed tag --
|
|||||||
this package's tag line continues YTSage's, which is why it starts at 5.x.
|
this package's tag line continues YTSage's, which is why it starts at 5.x.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = "5.4.0"
|
__version__ = "5.5.0"
|
||||||
__author__ = "Houmeres"
|
__author__ = "Houmeres"
|
||||||
|
|||||||
@@ -281,13 +281,25 @@ class MpvRenderWidget(QOpenGLWidget):
|
|||||||
if value is not None:
|
if value is not None:
|
||||||
self.mpvBufferingChanged.emit(bool(value))
|
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:
|
def _on_mpv_log(self, level: str, prefix: str, text: str) -> None:
|
||||||
|
message = text.strip()
|
||||||
if level in ("error", "fatal"):
|
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":
|
if "ytdl" in prefix or level == "fatal":
|
||||||
self.mpvError.emit(text.strip())
|
self.mpvError.emit(message)
|
||||||
else:
|
else:
|
||||||
logger.debug(f"mpv [{prefix}] {text.strip()}")
|
logger.debug(f"mpv [{prefix}] {message}")
|
||||||
|
|
||||||
# --------------------------------------------------------------- OpenGL
|
# --------------------------------------------------------------- OpenGL
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user