Fix crash if Renderer is destroyed without having been Init'ed.
PiperOrigin-RevId: 831375559 Change-Id: Ia1d0334e32dbbd0582d4f75723867d6ea47bf9da
This commit is contained in:
committed by
Copybara-Service
parent
28c536bd93
commit
7b52d3034e
@@ -29,24 +29,21 @@ 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) {
|
||||||
|
make_context_fn_(model, &render_context_);
|
||||||
|
mjv_defaultScene(&scene_);
|
||||||
|
mjv_makeScene(model, &scene_, 2000);
|
||||||
|
initialized_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (model == nullptr) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
make_context_fn_(model, &render_context_);
|
|
||||||
mjv_defaultScene(&scene_);
|
|
||||||
mjv_makeScene(model, &scene_, 2000);
|
|
||||||
initialized_ = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::Deinit() {
|
void Renderer::Deinit() {
|
||||||
mjv_freeScene(&scene_);
|
if (initialized_) {
|
||||||
mjr_freeContext(&render_context_);
|
mjv_freeScene(&scene_);
|
||||||
initialized_ = false;
|
mjr_freeContext(&render_context_);
|
||||||
|
initialized_ = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::Render(const mjModel* model, mjData* data,
|
void Renderer::Render(const mjModel* model, mjData* data,
|
||||||
|
|||||||
Reference in New Issue
Block a user