Fix crash if Renderer is destroyed without having been Init'ed.

PiperOrigin-RevId: 831375559
Change-Id: Ia1d0334e32dbbd0582d4f75723867d6ea47bf9da
This commit is contained in:
Haroon Qureshi
2025-11-12 07:14:37 -08:00
committed by Copybara-Service
parent 28c536bd93
commit 7b52d3034e
+4 -7
View File
@@ -29,25 +29,22 @@ Renderer::Renderer(MakeContextFn make_context_fn)
Renderer::~Renderer() { Deinit(); } Renderer::~Renderer() { Deinit(); }
void Renderer::Init(const mjModel* model) { void Renderer::Init(const mjModel* model) {
if (initialized_) {
Deinit(); Deinit();
} if (model) {
if (model == nullptr) {
return;
}
make_context_fn_(model, &render_context_); make_context_fn_(model, &render_context_);
mjv_defaultScene(&scene_); mjv_defaultScene(&scene_);
mjv_makeScene(model, &scene_, 2000); mjv_makeScene(model, &scene_, 2000);
initialized_ = true; initialized_ = true;
} }
}
void Renderer::Deinit() { void Renderer::Deinit() {
if (initialized_) {
mjv_freeScene(&scene_); mjv_freeScene(&scene_);
mjr_freeContext(&render_context_); mjr_freeContext(&render_context_);
initialized_ = false; initialized_ = false;
} }
}
void Renderer::Render(const mjModel* model, mjData* data, void Renderer::Render(const mjModel* model, mjData* data,
const mjvPerturb* perturb, mjvCamera* camera, const mjvPerturb* perturb, mjvCamera* camera,