[Bf-blender-cvs] [b01d2ea72ac] master: Libquery: Refactor: add bmain to data passed to callback.

Bastien Montagne noreply at git.blender.org
Mon May 25 15:28:20 CEST 2020


Commit: b01d2ea72ac17d93083cab974563b48d729faf7a
Author: Bastien Montagne
Date:   Mon May 25 15:26:58 2020 +0200
Branches: master
https://developer.blender.org/rBb01d2ea72ac17d93083cab974563b48d729faf7a

Libquery: Refactor: add bmain to data passed to callback.

No reason to enforce defining own callback user data for something that
controlling has already available...

===================================================================

M	source/blender/blenkernel/BKE_lib_query.h
M	source/blender/blenkernel/intern/lib_id.c
M	source/blender/blenkernel/intern/lib_query.c
M	source/blender/editors/undo/memfile_undo.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_lib_query.h b/source/blender/blenkernel/BKE_lib_query.h
index fac1852eafe..c5a25e8e7af 100644
--- a/source/blender/blenkernel/BKE_lib_query.h
+++ b/source/blender/blenkernel/BKE_lib_query.h
@@ -94,6 +94,8 @@ enum {
 
 typedef struct LibraryIDLinkCallbackData {
   void *user_data;
+  /** Main database used to call `BKE_library_foreach_ID_link()`. */
+  struct Main *bmain;
   /**
    * 'Real' ID, the one that might be in bmain, only differs from self_id when the later is an
    * embedded one.
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c
index 9e8c8c36c63..ba5a169b4ee 100644
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@ -305,7 +305,7 @@ void BKE_id_clear_newpoin(ID *id)
 
 static int lib_id_expand_local_cb(LibraryIDLinkCallbackData *cb_data)
 {
-  Main *bmain = cb_data->user_data;
+  Main *bmain = cb_data->bmain;
   ID *id_self = cb_data->id_self;
   ID **id_pointer = cb_data->id_pointer;
   int const cb_flag = cb_data->cb_flag;
@@ -343,7 +343,7 @@ static int lib_id_expand_local_cb(LibraryIDLinkCallbackData *cb_data)
  */
 void BKE_lib_id_expand_local(Main *bmain, ID *id)
 {
-  BKE_library_foreach_ID_link(bmain, id, lib_id_expand_local_cb, bmain, IDWALK_READONLY);
+  BKE_library_foreach_ID_link(bmain, id, lib_id_expand_local_cb, NULL, IDWALK_READONLY);
 }
 
 /**
diff --git a/source/blender/blenkernel/intern/lib_query.c b/source/blender/blenkernel/intern/lib_query.c
index 015fa235a06..dca3ea189a8 100644
--- a/source/blender/blenkernel/intern/lib_query.c
+++ b/source/blender/blenkernel/intern/lib_query.c
@@ -122,6 +122,7 @@ bool BKE_lib_query_foreachid_process(LibraryForeachIDData *data, ID **id_pp, int
     ID *old_id = *id_pp;
     const int callback_return = data->callback(&(struct LibraryIDLinkCallbackData){
         .user_data = data->user_data,
+        .bmain = data->bmain,
         .id_owner = data->owner_id,
         .id_self = data->self_id,
         .id_pointer = id_pp,
diff --git a/source/blender/editors/undo/memfile_undo.c b/source/blender/editors/undo/memfile_undo.c
index f22e18de7a1..2df26abe8b3 100644
--- a/source/blender/editors/undo/memfile_undo.c
+++ b/source/blender/editors/undo/memfile_undo.c
@@ -216,7 +216,7 @@ static void memfile_undosys_step_decode(struct bContext *C,
     FOREACH_MAIN_ID_BEGIN (bmain, id) {
       if (id->tag & LIB_TAG_UNDO_OLD_ID_REUSED) {
         BKE_library_foreach_ID_link(
-            bmain, id, memfile_undosys_step_id_reused_cb, bmain, IDWALK_READONLY);
+            bmain, id, memfile_undosys_step_id_reused_cb, NULL, IDWALK_READONLY);
       }
 
       /* Tag depsgraph to update data-block for changes that happened between the



More information about the Bf-blender-cvs mailing list