From f28bb6992fa9773fb1e7918d569f4c88427f4c96 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 13 Feb 2020 12:56:10 +0100 Subject: Refactor libquery ID looper callback to take a single parameter. Using a struct here allows to change given parameters to the callbacks without having to edit all callbacks functions, which is always noisy and time consuming. --- .../depsgraph/intern/eval/deg_eval_copy_on_write.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc') diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc index c2222bfcbce..edb02ee331f 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc @@ -513,12 +513,15 @@ struct RemapCallbackUserData { bool create_placeholders; }; -int foreach_libblock_remap_callback(void *user_data_v, ID *id_self, ID **id_p, int /*cb_flag*/) +int foreach_libblock_remap_callback(LibraryIDLinkCallbackData *cb_data) { + ID **id_p = cb_data->id_pointer; if (*id_p == nullptr) { return IDWALK_RET_NOP; } - RemapCallbackUserData *user_data = (RemapCallbackUserData *)user_data_v; + + ID *id_self = cb_data->id_self; + RemapCallbackUserData *user_data = (RemapCallbackUserData *)cb_data->user_data; const Depsgraph *depsgraph = user_data->depsgraph; ID *id_orig = *id_p; if (deg_copy_on_write_is_needed(id_orig)) { @@ -813,12 +816,11 @@ void update_id_after_copy(const Depsgraph *depsgraph, /* This callback is used to validate that all nested ID data-blocks are * properly expanded. */ -int foreach_libblock_validate_callback(void *user_data, - ID * /*id_self*/, - ID **id_p, - int /*cb_flag*/) +int foreach_libblock_validate_callback(LibraryIDLinkCallbackData *cb_data) { - ValidateData *data = (ValidateData *)user_data; + ValidateData *data = (ValidateData *)cb_data->user_data; + ID **id_p = cb_data->id_pointer; + if (*id_p != nullptr) { if (!check_datablock_expanded(*id_p)) { data->is_valid = false; -- cgit v1.2.3