Commit: 3765653b38f82c1190127f06c868e34c2d017232
Author: Germano
Date:   Fri Apr 13 10:41:44 2018 -0300
Branches: blender2.8
https://developer.blender.org/rB3765653b38f82c1190127f06c868e34c2d017232

RNA: Fix crash with select_mode_update.

`bpy.context.tool_settings.mesh_select_mode = (True, True, True)` was crashing 
because `wmn->window` was not being passed.

===================================================================

M       source/blender/editors/space_view3d/space_view3d.c
M       source/blender/makesrna/intern/rna_scene.c

===================================================================

diff --git a/source/blender/editors/space_view3d/space_view3d.c 
b/source/blender/editors/space_view3d/space_view3d.c
index abfbccdcc27..9fb602c81d6 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -911,11 +911,15 @@ static void view3d_main_region_listener(
                                {
                                        WM_manipulatormap_tag_refresh(mmap);
 
-                                       ViewLayer *view_layer = 
WM_window_get_active_view_layer(wmn->window);
-                                       Object *obedit = 
OBEDIT_FROM_VIEW_LAYER(view_layer);
-                                       if (obedit) {
+                                       ID *ob_data = wmn->reference;
+                                       if (ob_data == NULL) {
+                                               BLI_assert(wmn->window); // Use 
`WM_event_add_notifier` instead of `WM_main_add_notifier`
+                                               ViewLayer *view_layer = 
WM_window_get_active_view_layer(wmn->window);
+                                               ob_data = 
OBEDIT_FROM_VIEW_LAYER(view_layer)->data;
+                                       }
+                                       if (ob_data) {
                                                /* TODO(sergey): Notifiers 
shouldn't really be doing DEG tags. */
-                                               DEG_id_tag_update((ID 
*)obedit->data, DEG_TAG_SELECT_UPDATE);
+                                               DEG_id_tag_update(ob_data, 
DEG_TAG_SELECT_UPDATE);
                                        }
                                        ATTR_FALLTHROUGH;
                                }
diff --git a/source/blender/makesrna/intern/rna_scene.c 
b/source/blender/makesrna/intern/rna_scene.c
index 568980d6976..3c600f6e367 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -1507,8 +1507,10 @@ static void 
rna_Scene_editmesh_select_mode_update(bContext *C, PointerRNA *UNUSE
                        me = NULL;
        }
 
-       WM_main_add_notifier(NC_GEOM | ND_SELECT, me);
-       WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, NULL);
+       if (me) {
+               DEG_id_tag_update(&me->id, DEG_TAG_SELECT_UPDATE);
+               WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, NULL);
+       }
 }
 
 static void object_simplify_update(Object *ob)

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to