diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-04-01 11:22:06 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-04-01 15:30:42 +0300 |
commit | a2a571987c6f6a1caee57057cfed18896b786c5b (patch) | |
tree | d6ed9f66bc7327c4c0ff923a9f1e94586abd38a0 | |
parent | 90638d850de076dab20554b15b37ef9d0b71f8ea (diff) |
Fix T62960: Expanding/Closing Constraints/Modifiers causes re-render
Mark specific properties as no-dependency-graph tag.
This is needed to avoid a centralized Copy-on-Write tag from RNA
pointer update.
-rw-r--r-- | source/blender/makesrna/RNA_types.h | 5 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_action.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_boid.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_camera.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_constraint.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_fcurve.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_gpencil_modifier.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_modifier.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_nodetree.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_sequencer.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_shader_fx.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_wm.c | 1 |
13 files changed, 17 insertions, 1 deletions
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index e713007cc03..49e1444d6ef 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -239,6 +239,11 @@ typedef enum PropertyFlag { PROP_DYNAMIC = (1 << 17), /* for dynamic arrays, and retvals of type string */ PROP_ENUM_NO_CONTEXT = (1 << 24), /* for enum that shouldn't be contextual */ PROP_ENUM_NO_TRANSLATE = (1 << 29), /* for enums not to be translated (e.g. viewlayers' names in nodes) */ + + /* Don't do dependency graph tag from a property update callback. + * Use this for properties which defines interface state, for example, + * properties which denotes whether modifier panel is collapsed or not. */ + PROP_NO_DEG_UPDATE = (1 << 30), } PropertyFlag; /* Flags related to comparing and overriding RNA properties. Make sure enums are updated with these */ diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index d72e6a5a9c9..1d391988cbd 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -2187,7 +2187,7 @@ static void rna_property_update(bContext *C, Main *bmain, Scene *scene, PointerR /* we could add NULL check, for now don't */ WM_msg_publish_rna(mbus, ptr, prop); } - if (ptr->id.data != NULL) { + if (ptr->id.data != NULL && ((prop->flag & PROP_NO_DEG_UPDATE) == 0)) { const short id_type = GS(((ID *)ptr->id.data)->name); if (ID_TYPE_IS_COW(id_type)) { DEG_id_tag_update(ptr->id.data, ID_RECALC_COPY_ON_WRITE); diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 1a66a122612..7d86c42c561 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -554,6 +554,7 @@ static void rna_def_action_group(BlenderRNA *brna) RNA_def_property_update(prop, NC_ANIMATION | ND_ANIMCHAN | NA_EDITED, NULL); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "Action group is expanded"); RNA_def_property_update(prop, NC_ANIMATION | ND_ANIMCHAN | NA_EDITED, NULL); diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c index 27e4ee639c5..9ffc53d2ad9 100644 --- a/source/blender/makesrna/intern/rna_boid.c +++ b/source/blender/makesrna/intern/rna_boid.c @@ -442,6 +442,7 @@ static void rna_def_boidrule(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Boids_reset"); /*prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); */ + /*RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE);*/ /*RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded); */ /*RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface"); */ diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c index 7fc4b3421b2..5f930c178a2 100644 --- a/source/blender/makesrna/intern/rna_camera.c +++ b/source/blender/makesrna/intern/rna_camera.c @@ -225,6 +225,7 @@ static void rna_def_camera_background_image(BlenderRNA *brna) RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CAM_BGIMG_FLAG_EXPANDED); RNA_def_property_ui_text(prop, "Show Expanded", "Show the expanded in the user interface"); RNA_def_property_ui_icon(prop, ICON_DISCLOSURE_TRI_RIGHT, 1); diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index eae9ca2f8f8..16cd103b772 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -2641,6 +2641,7 @@ void RNA_def_constraint(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update"); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_EXPAND); RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_STATIC); RNA_def_property_ui_text(prop, "Expanded", "Constraint's panel is expanded in UI"); diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index ca4a6d2481f..4d981fe6e9c 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -1405,6 +1405,7 @@ static void rna_def_fmodifier(BlenderRNA *brna) /* settings */ prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is expanded in UI"); RNA_def_property_ui_icon(prop, ICON_DISCLOSURE_TRI_RIGHT, 1); diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c index f0be1a2d6a3..23be3bb2980 100644 --- a/source/blender/makesrna/intern/rna_gpencil_modifier.c +++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c @@ -1627,6 +1627,7 @@ void RNA_def_greasepencil_modifier(BlenderRNA *brna) RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "mode", eGpencilModifierMode_Expanded); RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_STATIC); RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface"); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index a0d37d34526..6dca81415f3 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -5119,6 +5119,7 @@ void RNA_def_modifier(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded); RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_STATIC); RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface"); diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 7bd3d5e9b9c..44cf15995f9 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -7202,6 +7202,7 @@ static void rna_def_node_socket(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Linked", "True if the socket is connected"); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SOCK_COLLAPSED); RNA_def_property_ui_text(prop, "Expanded", "Socket links are expanded in the user interface"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, NULL); diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index c01f59582d1..569fbb61ad8 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -2608,6 +2608,7 @@ static void rna_def_modifier(BlenderRNA *brna) RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_SequenceModifier_update"); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQUENCE_MODIFIER_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "Mute expanded settings for the modifier"); RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); diff --git a/source/blender/makesrna/intern/rna_shader_fx.c b/source/blender/makesrna/intern/rna_shader_fx.c index 78a21b71fbf..41e87f6d121 100644 --- a/source/blender/makesrna/intern/rna_shader_fx.c +++ b/source/blender/makesrna/intern/rna_shader_fx.c @@ -683,6 +683,7 @@ void RNA_def_shader_fx(BlenderRNA *brna) RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "mode", eShaderFxMode_Expanded); RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_STATIC); RNA_def_property_ui_text(prop, "Expanded", "Set effect expanded in the user interface"); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 55a18b40adc..d94349d50de 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -2534,6 +2534,7 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_KeyMapItem_update"); prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE); RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "Show key map event and property details in the user interface"); RNA_def_property_ui_icon(prop, ICON_DISCLOSURE_TRI_RIGHT, 1); |