Code Cleanup: Clarify some comments regarding usercount management
(Note for the uninitiated looking at the diffs: this is very much *not* what you're probably thinking right now, if you're looking at the line in act_new_exec())
This commit is contained in:
@@ -109,9 +109,11 @@ static int act_new_exec(bContext *C, wmOperator *UNUSED(op))
|
|||||||
action = add_empty_action(bmain, "Action");
|
action = add_empty_action(bmain, "Action");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* when creating new ID blocks, use is already 1 (fake user),
|
/* when creating new ID blocks, there is already 1 user (as for all new datablocks),
|
||||||
* but RNA pointer use also increases user, so this compensates it
|
* 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--;
|
action->id.us--;
|
||||||
|
|
||||||
RNA_id_pointer_create(&action->id, &idptr);
|
RNA_id_pointer_create(&action->id, &idptr);
|
||||||
@@ -134,6 +136,8 @@ void ACTION_OT_new(wmOperatorType *ot)
|
|||||||
|
|
||||||
/* api callbacks */
|
/* api callbacks */
|
||||||
ot->exec = act_new_exec;
|
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... */
|
/* NOTE: this is used in the NLA too... */
|
||||||
//ot->poll = ED_operator_action_active;
|
//ot->poll = ED_operator_action_active;
|
||||||
|
|
||||||
|
|||||||
@@ -1127,7 +1127,7 @@ static void rna_SpaceDopeSheetEditor_action_update(Main *UNUSED(bmain), Scene *s
|
|||||||
/* fix id-count of action we're replacing */
|
/* fix id-count of action we're replacing */
|
||||||
id_us_min(&adt->action->id);
|
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;
|
adt->action = saction->action;
|
||||||
id_us_plus(&adt->action->id);
|
id_us_plus(&adt->action->id);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user