Add a release method to OpenGLRenderer

This commit is contained in:
JasonGrace2282 2024-11-07 16:31:17 -05:00
commit 97fedbca13
No known key found for this signature in database
GPG key ID: 8D61FE3F93FB15FA
4 changed files with 12 additions and 4 deletions

View file

@ -158,6 +158,7 @@ class Manager(Generic[Scene_co]):
config._warn_about_config_options()
self._render_first_pass()
self._render_second_pass()
self.release()
def _render_first_pass(self) -> None:
"""
@ -192,6 +193,9 @@ class Manager(Generic[Scene_co]):
"""
...
def release(self) -> None:
self.renderer.release()
def post_contruct(self) -> None:
"""Run post-construct hooks, and clean up the file writer."""
if self.file_writer.num_plays:

View file

@ -524,6 +524,10 @@ class OpenGLRenderer(Renderer, RendererProtocol):
# numpy typing being bad, we have to type: ignore it
return buf[::-1] # type: ignore
def release(self) -> None:
self.ctx.release()
self.output_fbo.release()
class GLVMobjectManager:
@staticmethod

View file

@ -78,6 +78,10 @@ class RendererProtocol(Protocol):
"""Get the pixels that should be written to a file."""
...
def release(self) -> None:
"""Release any resources the renderer is holding."""
...
# NOTE: The user should expect depth between renderers not to be handled discussed at 03.09.2023 Between jsonv and MrDiver
# NOTE: Cairo_camera overlay_PIL_image for MultiRenderer

View file

@ -10,7 +10,6 @@ import pytest
from manim import Manager, Scene
from manim._config import tempconfig
from manim._config.utils import ManimConfig
from manim.renderer.opengl_renderer import OpenGLRenderer
from ._frames_testers import _ControlDataWriter, _FramesTester
from ._test_class_makers import (
@ -213,9 +212,6 @@ def _make_test_comparing_frames(
manager.render()
if last_frame:
frames_tester.check_frame(-1, manager.renderer.get_pixels())
if isinstance(manager.renderer, OpenGLRenderer):
manager.renderer.ctx.release()
manager.renderer.output_fbo.release()
return real_test