popout: explicit mpv cleanup on close to free VRAM
FullscreenPreview has no WA_DeleteOnClose and Qt's C++ dtor does not reliably call Python-side destroy() overrides once popout_controller drops its reference, so the popout's separate mpv instance + NVDEC surface pool leaked until the next full Python GC cycle. closeEvent now calls _gl_widget.cleanup() explicitly after the state machine's CloseRequested dispatch. behavior change from v0.2.6: popout open/close cycles no longer stair-step VRAM upward; the popout's mpv is torn down immediately on close instead of waiting on GC.
This commit is contained in:
parent
860c8dcd50
commit
9713794633
@ -1777,4 +1777,14 @@ class FullscreenPreview(QMainWindow):
|
||||
# EmitClosed emits self.closed which triggers main_window's
|
||||
# _on_fullscreen_closed handler.
|
||||
self._dispatch_and_apply(CloseRequested())
|
||||
# Tear down the popout's mpv + GL render context explicitly.
|
||||
# FullscreenPreview has no WA_DeleteOnClose and Qt's C++ dtor
|
||||
# doesn't reliably call Python-side destroy() overrides once
|
||||
# popout_controller drops its reference, so without this the
|
||||
# popout's separate mpv instance + NVDEC surface pool leak
|
||||
# until the next full Python GC cycle.
|
||||
try:
|
||||
self._video._gl_widget.cleanup()
|
||||
except Exception:
|
||||
pass
|
||||
super().closeEvent(event)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user