MLR108: Object treated as visible after a renderer-divergent unfix¶
qual reports MLR108 when an object is mutated after a
renderer-divergent remove_fixed_in_frame_mobjects /
remove_fixed_orientation_mobjects call without an explicit Scene.add
/ Scene.remove in between, while an active profile targets OpenGL.
- Default severity:
warning - Minimum confidence:
high - Implementation phase:
4 - Fix: none (suggests an explicit
add/removeafter the unfix)
Unfixing a fixed object diverges between the renderers (DESIGN 3.5,
three_d_scene.py): Cairo only unregisters the camera fixation and the
object stays displayed; the OpenGL branch additionally calls
Scene.remove. Styling or moving the object afterwards therefore
renders a visible change under Cairo and nothing under OpenGL. The
diagnostic anchors at the first definite mutation and its
applicable_profiles lists the OpenGL profiles (DESIGN 15.8).
An explicit Scene.add / Scene.remove (a play's auto-add included)
pins the intended membership and silences the rule; branch-dependent
removals or mutations, unknown calls that may touch the object, and
Cairo-only runs stay silent.
Wrong (with an OpenGL profile active):
self.remove_fixed_in_frame_mobjects(label)
label.set_color(RED) # invisible under OpenGL, visible under Cairo
Right: