Add a free() method to mujoco.MjrContext.

Up the mujoco bindings version to 2.1.2.post2.

Keep the capsule deconstructor which calls mj_freeContext, because mjr_freeContext is idempotent.

PiperOrigin-RevId: 435714183
Change-Id: I9f8615f85f2b3e383f447f6684e61200039d57d4
This commit is contained in:
Nimrod Gileadi
2022-03-18 13:00:32 -07:00
committed by Saran Tunyasuvunakool
parent df202d23b1
commit c6984b42af
3 changed files with 32 additions and 7 deletions
+19 -6
View File
@@ -49,13 +49,10 @@ class MuJoCoRenderTest(absltest.TestCase):
scene = mujoco.MjvScene(self.model, maxgeom=0)
mujoco.mjv_updateScene(
self.model, self.data, mujoco.MjvOption(), mujoco.MjvPerturb(),
mujoco.MjvCamera(), mujoco.mjtCatBit.mjCAT_ALL.value, scene)
mujoco.MjvCamera(), mujoco.mjtCatBit.mjCAT_ALL, scene)
context = mujoco.MjrContext(
self.model,
mujoco.mjtFontScale.mjFONTSCALE_150.value)
mujoco.mjr_setBuffer(
mujoco.mjtFramebuffer.mjFB_OFFSCREEN.value, context)
context = mujoco.MjrContext(self.model, mujoco.mjtFontScale.mjFONTSCALE_150)
mujoco.mjr_setBuffer(mujoco.mjtFramebuffer.mjFB_OFFSCREEN, context)
# MuJoCo's default render buffer size is 640x480.
full_rect = mujoco.MjrRect(0, 0, 640, 480)
@@ -76,6 +73,22 @@ class MuJoCoRenderTest(absltest.TestCase):
mujoco.mjr_readPixels(
np.reshape(upside_down_image, -1), None, full_rect, context)
np.testing.assert_array_equal(upside_down_image, expected_upside_down_image)
context.free()
def test_safe_to_free_context_twice(self):
self.model = mujoco.MjModel.from_xml_string('<mujoco><worldbody/></mujoco>')
self.data = mujoco.MjData(self.model)
scene = mujoco.MjvScene(self.model, maxgeom=0)
mujoco.mjv_updateScene(
self.model, self.data, mujoco.MjvOption(), None,
mujoco.MjvCamera(), mujoco.mjtCatBit.mjCAT_ALL, scene)
context = mujoco.MjrContext(self.model, mujoco.mjtFontScale.mjFONTSCALE_150)
mujoco.mjr_setBuffer(mujoco.mjtFramebuffer.mjFB_OFFSCREEN, context)
context.free()
context.free()
if __name__ == '__main__':
absltest.main()