[Bf-blender-cvs] [e6128bd177c] temp-dynamic-overrides: Tag depsgraph COW for update when changing dynamic overrides
Dalai Felinto
noreply at git.blender.org
Fri May 25 20:42:07 CEST 2018
Commit: e6128bd177ca144f2256873de85603cd86bcf061
Author: Dalai Felinto
Date: Fri May 25 20:33:48 2018 +0200
Branches: temp-dynamic-overrides
https://developer.blender.org/rBe6128bd177ca144f2256873de85603cd86bcf061
Tag depsgraph COW for update when changing dynamic overrides
===================================================================
M source/blender/editors/scene/scene_edit.c
M source/blender/makesrna/intern/rna_layer.c
===================================================================
diff --git a/source/blender/editors/scene/scene_edit.c b/source/blender/editors/scene/scene_edit.c
index 03472807d38..b1d8e265859 100644
--- a/source/blender/editors/scene/scene_edit.c
+++ b/source/blender/editors/scene/scene_edit.c
@@ -293,8 +293,10 @@ static void SCENE_OT_delete(wmOperatorType *ot)
static int view_layer_override_set_add_exec(bContext *C, wmOperator *UNUSED(op))
{
+ Scene *scene = CTX_data_scene(C);
BKE_view_layer_override_set_add(CTX_data_view_layer(C), "New Override Set");
- WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, CTX_data_scene(C));
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
+ WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, scene);
return OPERATOR_FINISHED;
}
@@ -314,6 +316,7 @@ static void SCENE_OT_view_layer_override_set_add(wmOperatorType *ot)
static int view_layer_override_set_remove_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
OverrideSet *override_set = BLI_findlink(&view_layer->override_sets, view_layer->active_override_set);
@@ -323,8 +326,9 @@ static int view_layer_override_set_remove_exec(bContext *C, wmOperator *op)
}
BKE_view_layer_override_set_remove(view_layer, override_set);
- WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, CTX_data_scene(C));
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
+ WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, scene);
return OPERATOR_FINISHED;
}
@@ -379,6 +383,7 @@ static int view_layer_override_set_collection_link_exec(bContext *C, wmOperator
OverrideSet *override_set = BLI_findlink(&view_layer->override_sets, view_layer->active_override_set);
if (BKE_view_layer_override_set_collection_link(override_set, collection)) {
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, scene);
return OPERATOR_FINISHED;
}
@@ -553,14 +558,16 @@ static void SCENE_OT_override_set_collection_link(wmOperatorType *ot)
static int view_layer_override_set_collection_unlink_exec(bContext *C, wmOperator *UNUSED(op))
{
+ Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
OverrideSet *override_set = BLI_findlink(&view_layer->override_sets, view_layer->active_override_set);
LinkData *link = BLI_findlink(&override_set->affected_collections, override_set->active_affected_collection);
Collection *collection = link->data;
BKE_view_layer_override_set_collection_unlink(override_set, collection);
- WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, CTX_data_scene(C));
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
+ WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, scene);
return OPERATOR_FINISHED;
}
@@ -611,6 +618,7 @@ static int view_layer_override_add_exec(bContext *C, wmOperator *op)
ID *id = override_property_data.ptr.id.data;
BLI_assert(id != NULL);
+ Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
OverrideSet *override_set;
@@ -637,7 +645,8 @@ static int view_layer_override_add_exec(bContext *C, wmOperator *op)
override_property_data.prop,
override_property_data.index);
- WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, CTX_data_scene(C));
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
+ WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, scene);
return OPERATOR_FINISHED;
}
@@ -731,6 +740,7 @@ static void SCENE_OT_view_layer_override_add(wmOperatorType *ot)
static int view_layer_override_remove_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
OverrideSet *override_set = BLI_findlink(&view_layer->override_sets, view_layer->active_override_set);
@@ -767,6 +777,9 @@ static int view_layer_override_remove_exec(bContext *C, wmOperator *op)
}
BKE_view_layer_override_property_remove(override_set, dyn_prop);
+
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
+ WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, scene);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c
index d66e793a0ef..185184b72dd 100644
--- a/source/blender/makesrna/intern/rna_layer.c
+++ b/source/blender/makesrna/intern/rna_layer.c
@@ -244,6 +244,7 @@ static void rna_OverriddenCollection_link(
{
if (BKE_view_layer_override_set_collection_link(override_set, collection)) {
Scene *scene = (Scene *)id;
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
WM_main_add_notifier(NC_SCENE | ND_DYN_OVERRIDES, scene);
}
else {
@@ -267,6 +268,7 @@ static void rna_OverriddenCollection_unlink(
}
else {
Scene *scene = (Scene *)id;
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
WM_main_add_notifier(NC_SCENE | ND_DYN_OVERRIDES, scene);
}
}
@@ -334,6 +336,7 @@ static OverrideSet *rna_OverrideSet_new(ID *id, ViewLayer *view_layer, const cha
{
Scene *scene = (Scene *)id;
OverrideSet *override_set = BKE_view_layer_override_set_add(view_layer, name);
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
WM_main_add_notifier(NC_SCENE | ND_DYN_OVERRIDES, scene);
return override_set;
}
@@ -354,6 +357,7 @@ static void rna_OverrideSet_remove(
}
RNA_POINTER_INVALIDATE(ptr);
+ DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
WM_main_add_notifier(NC_SCENE | ND_DYN_OVERRIDES, scene);
}
More information about the Bf-blender-cvs
mailing list