diff options
-rw-r--r-- | source/blender/editors/space_action/action_edit.c | 8 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index bc9c578b558..28e10a90a87 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -109,9 +109,11 @@ static int act_new_exec(bContext *C, wmOperator *UNUSED(op)) action = add_empty_action(bmain, "Action"); } - /* when creating new ID blocks, use is already 1 (fake user), - * but RNA pointer use also increases user, so this compensates it + /* when creating new ID blocks, there is already 1 user (as for all new datablocks), + * but the RNA pointer code will assign all the proper users instead, so we compensate + * for that here */ + BLI_assert(action->id.us == 1); action->id.us--; RNA_id_pointer_create(&action->id, &idptr); @@ -134,6 +136,8 @@ void ACTION_OT_new(wmOperatorType *ot) /* api callbacks */ ot->exec = act_new_exec; + // TODO: add a new invoke() callback to catch cases where users unexpectedly delete their data + /* NOTE: this is used in the NLA too... */ //ot->poll = ED_operator_action_active; diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 11104dc6d11..9e7d70ab3b2 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1127,7 +1127,7 @@ static void rna_SpaceDopeSheetEditor_action_update(Main *UNUSED(bmain), Scene *s /* fix id-count of action we're replacing */ id_us_min(&adt->action->id); - /* show new id-count of action we're replacing */ + /* assign new action, and adjust the usercounts accordingly */ adt->action = saction->action; id_us_plus(&adt->action->id); |