Fix T51416: Blender Crashes while moving Sliders
ClosedPublic

Authored by Sergey Sharybin (sergey) on Sep 13 2017, 5:15 PM.

Details

Summary

The issue here was that removing datablock from main database will poke editors
update, which includes buttons context to free users of texture. Since Cycles
will free datablocks from job thread, it might crash Blender since main thread
might be in the middle of drawing.

Solved by exposing extra arguments to bpy.data.foo.remove() which indicates
whether we want to perform ID user count and interface updates. While scripts
shouldn't be using those normally, this is the only way to allow Cycles to skip
interface update when removing datablock.

Alternative could be to skip editors update if it's requested from non-main
thread, similar to ED_render_scene_update().

Diff Detail

Repository
rB Blender

Think this fix is simple and safe enough, not ideal to expose that kind of advanced stuff to python, but on the other ends render engines are doing rather advanced stuff, so guess we cannot really avoid it.

This revision is now accepted and ready to land.Sep 14 2017, 1:00 PM
This revision was automatically updated to reflect the committed changes.