diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-11-07 15:05:38 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-11-07 16:04:47 +0300 |
commit | 48488b7106a32bdc4bcf589dd3043d7101fe7054 (patch) | |
tree | 979d804c3839a047323b7836151fe8bc33e7689c /source | |
parent | 1cadd811cee92d26ef70fcf3ccf98ac54c5479ca (diff) |
Skip dependency graph update when interface is locked
This is a variation of legacy dependency graph update check based on
G.is_rendering. Now it is ensured, that locked interface does not
tempter around with the dependency graph.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 198eae05f92..cff221b3b64 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -299,9 +299,17 @@ static void wm_notifier_clear(wmNotifier *note) void wm_event_do_depsgraph(bContext *C) { wmWindowManager *wm = CTX_wm_manager(C); - uint64_t win_combine_v3d_datamask = 0; + + /* The whole idea of locked interface is to prevent viewport and whatever + * thread to modify the same data. Because of this, we can not perform + * dependency graph update. + */ + if (wm->is_interface_locked) { + return; + } /* combine datamasks so 1 win doesn't disable UV's in another [#26448] */ + uint64_t win_combine_v3d_datamask = 0; for (wmWindow *win = wm->windows.first; win; win = win->next) { const Scene *scene = WM_window_get_active_scene(win); const bScreen *screen = WM_window_get_active_screen(win); |