diff options
author | Ton Roosendaal <ton@blender.org> | 2011-03-25 20:11:32 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-03-25 20:11:32 +0300 |
commit | 11920f7880062c1efb68a4e141162b7ec060ca29 (patch) | |
tree | 18cb137f954fcbdab56da53c4c3fcbee041f7692 /source/blender/blenkernel/intern/screen.c | |
parent | fb2fd884637f912a56302d331f4514ddd7b18374 (diff) |
Bugfix #26195
When rendering, during processing scene data, drawing in 3d window
is now locked. Can get extended to more areas in UI easily.
At least this solves all crashes with conflicting memory access in
render && 3d drawing. Deleting objects via operators or delete
modifiers isn't locked yet.
Also fixed: crash on quitting a renderwindow when it was rendering.
Diffstat (limited to 'source/blender/blenkernel/intern/screen.c')
-rw-r--r-- | source/blender/blenkernel/intern/screen.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c index d8219b61816..63e35408381 100644 --- a/source/blender/blenkernel/intern/screen.c +++ b/source/blender/blenkernel/intern/screen.c @@ -236,6 +236,26 @@ void BKE_spacedata_copylist(ListBase *lb1, ListBase *lb2) } } +/* facility to set locks for drawing to survive (render) threads accessing drawing data */ +/* lock can become bitflag too */ +/* should be replaced in future by better local data handling for threads */ +void BKE_spacedata_draw_locks(int set) +{ + SpaceType *st; + + for(st= spacetypes.first; st; st= st->next) { + ARegionType *art; + + for(art= st->regiontypes.first; art; art= art->next) { + if(set) + art->do_lock= art->lock; + else + art->do_lock= 0; + } + } +} + + /* not region itself */ void BKE_area_region_free(SpaceType *st, ARegion *ar) { @@ -395,3 +415,4 @@ void BKE_screen_view3d_main_sync(ListBase *screen_lb, Scene *scene) BKE_screen_view3d_sync((View3D*)sl, scene); } } + |