[Bf-blender-cvs] [b8afd4e8bb1] master: Refactor: use new api for direct linking bones, view layer and userdef

Jacques Lucke noreply at git.blender.org
Sun Jun 7 11:44:16 CEST 2020


Commit: b8afd4e8bb1136d9e0229ec6a85bef1cc7d884e7
Author: Jacques Lucke
Date:   Sun Jun 7 11:30:32 2020 +0200
Branches: master
https://developer.blender.org/rBb8afd4e8bb1136d9e0229ec6a85bef1cc7d884e7

Refactor: use new api for direct linking bones, view layer and userdef

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

M	source/blender/blenloader/intern/readfile.c

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index c8a77a1505f..a29eaa1eba3 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4095,23 +4095,24 @@ static void lib_link_armature(FileData *fd, Main *UNUSED(bmain), bArmature *arm)
   }
 }
 
-static void direct_link_bones(FileData *fd, Bone *bone)
+static void direct_link_bones(BlendDataReader *reader, Bone *bone)
 {
   Bone *child;
 
-  bone->parent = newdataadr(fd, bone->parent);
-  bone->prop = newdataadr(fd, bone->prop);
-  IDP_DirectLinkGroup_OrFree(&bone->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+  BLO_read_data_address(reader, &bone->parent);
+  BLO_read_data_address(reader, &bone->prop);
+  IDP_DirectLinkGroup_OrFree(
+      &bone->prop, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
 
-  bone->bbone_next = newdataadr(fd, bone->bbone_next);
-  bone->bbone_prev = newdataadr(fd, bone->bbone_prev);
+  BLO_read_data_address(reader, &bone->bbone_next);
+  BLO_read_data_address(reader, &bone->bbone_prev);
 
   bone->flag &= ~(BONE_DRAW_ACTIVE | BONE_DRAW_LOCKED_WEIGHT);
 
-  link_list(fd, &bone->childbase);
+  BLO_read_list(reader, &bone->childbase);
 
   for (child = bone->childbase.first; child; child = child->next) {
-    direct_link_bones(fd, child);
+    direct_link_bones(reader, child);
   }
 }
 
@@ -4129,7 +4130,7 @@ static void direct_link_armature(BlendDataReader *reader, bArmature *arm)
   direct_link_animdata(reader, arm->adt);
 
   for (bone = arm->bonebase.first; bone; bone = bone->next) {
-    direct_link_bones(reader->fd, bone);
+    direct_link_bones(reader, bone);
   }
 
   BLO_read_data_address(reader, &arm->act_bone);
@@ -6294,37 +6295,38 @@ static void direct_link_view_settings(BlendDataReader *reader,
 /** \name Read View Layer (Collection Data)
  * \{ */
 
-static void direct_link_layer_collections(FileData *fd, ListBase *lb, bool master)
+static void direct_link_layer_collections(BlendDataReader *reader, ListBase *lb, bool master)
 {
-  link_list(fd, lb);
+  BLO_read_list(reader, lb);
   LISTBASE_FOREACH (LayerCollection *, lc, lb) {
 #ifdef USE_COLLECTION_COMPAT_28
-    lc->scene_collection = newdataadr(fd, lc->scene_collection);
+    BLO_read_data_address(reader, &lc->scene_collection);
 #endif
 
     /* Master collection is not a real data-lock. */
     if (master) {
-      lc->collection = newdataadr(fd, lc->collection);
+      BLO_read_data_address(reader, &lc->collection);
     }
 
-    direct_link_layer_collections(fd, &lc->layer_collections, false);
+    direct_link_layer_collections(reader, &lc->layer_collections, false);
   }
 }
 
-static void direct_link_view_layer(FileData *fd, ViewLayer *view_layer)
+static void direct_link_view_layer(BlendDataReader *reader, ViewLayer *view_layer)
 {
   view_layer->stats = NULL;
-  link_list(fd, &view_layer->object_bases);
-  view_layer->basact = newdataadr(fd, view_layer->basact);
+  BLO_read_list(reader, &view_layer->object_bases);
+  BLO_read_data_address(reader, &view_layer->basact);
 
-  direct_link_layer_collections(fd, &view_layer->layer_collections, true);
-  view_layer->active_collection = newdataadr(fd, view_layer->active_collection);
+  direct_link_layer_collections(reader, &view_layer->layer_collections, true);
+  BLO_read_data_address(reader, &view_layer->active_collection);
 
-  view_layer->id_properties = newdataadr(fd, view_layer->id_properties);
-  IDP_DirectLinkGroup_OrFree(&view_layer->id_properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+  BLO_read_data_address(reader, &view_layer->id_properties);
+  IDP_DirectLinkGroup_OrFree(
+      &view_layer->id_properties, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
 
-  link_list(fd, &(view_layer->freestyle_config.modules));
-  link_list(fd, &(view_layer->freestyle_config.linesets));
+  BLO_read_list(reader, &(view_layer->freestyle_config.modules));
+  BLO_read_list(reader, &(view_layer->freestyle_config.linesets));
 
   BLI_listbase_clear(&view_layer->drawdata);
   view_layer->object_bases_array = NULL;
@@ -6436,7 +6438,7 @@ static void direct_link_collection(BlendDataReader *reader, Collection *collecti
 
   BLO_read_data_address(reader, &collection->view_layer);
   if (collection->view_layer != NULL) {
-    direct_link_view_layer(reader->fd, collection->view_layer);
+    direct_link_view_layer(reader, collection->view_layer);
   }
 #endif
 }
@@ -6555,11 +6557,12 @@ static void direct_link_lightcache(FileData *fd, LightCache *cache)
   cache->grid_data = newdataadr(fd, cache->grid_data);
 }
 
-static void direct_link_view3dshading(FileData *fd, View3DShading *shading)
+static void direct_link_view3dshading(BlendDataReader *reader, View3DShading *shading)
 {
   if (shading->prop) {
-    shading->prop = newdataadr(fd, shading->prop);
-    IDP_DirectLinkGroup_OrFree(&shading->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+    BLO_read_data_address(reader, &shading->prop);
+    IDP_DirectLinkGroup_OrFree(
+        &shading->prop, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
   }
 }
 
@@ -7157,7 +7160,7 @@ static void direct_link_scene(BlendDataReader *reader, Scene *sce)
   /* insert into global old-new map for reading without UI (link_global accesses it again) */
   link_glob_list(reader->fd, &sce->view_layers);
   for (view_layer = sce->view_layers.first; view_layer; view_layer = view_layer->next) {
-    direct_link_view_layer(reader->fd, view_layer);
+    direct_link_view_layer(reader, view_layer);
   }
 
   if (reader->fd->memfile) {
@@ -7178,7 +7181,7 @@ static void direct_link_scene(BlendDataReader *reader, Scene *sce)
   }
   EEVEE_lightcache_info_update(&sce->eevee);
 
-  direct_link_view3dshading(reader->fd, &sce->display.shading);
+  direct_link_view3dshading(reader, &sce->display.shading);
 
   BLO_read_data_address(reader, &sce->layer_properties);
   IDP_DirectLinkGroup_OrFree(
@@ -7444,7 +7447,7 @@ static void direct_link_area(BlendDataReader *reader, ScrArea *area)
       }
       v3d->shading.prev_type = OB_SOLID;
 
-      direct_link_view3dshading(reader->fd, &v3d->shading);
+      direct_link_view3dshading(reader, &v3d->shading);
 
       blo_do_versions_view3d_split_250(v3d, &sl->regionbase);
     }
@@ -7820,9 +7823,9 @@ static bool direct_link_area_map(BlendDataReader *reader, ScrAreaMap *area_map)
 /** \name XR-data
  * \{ */
 
-static void direct_link_wm_xr_data(FileData *fd, wmXrData *xr_data)
+static void direct_link_wm_xr_data(BlendDataReader *reader, wmXrData *xr_data)
 {
-  direct_link_view3dshading(fd, &xr_data->session_settings.shading);
+  direct_link_view3dshading(reader, &xr_data->session_settings.shading);
 }
 
 static void lib_link_wm_xr_data(FileData *fd, ID *parent_id, wmXrData *xr_data)
@@ -7886,7 +7889,7 @@ static void direct_link_windowmanager(BlendDataReader *reader, wmWindowManager *
     }
   }
 
-  direct_link_wm_xr_data(reader->fd, &wm->xr);
+  direct_link_wm_xr_data(reader, &wm->xr);
 
   BLI_listbase_clear(&wm->timers);
   BLI_listbase_clear(&wm->operators);
@@ -10221,10 +10224,11 @@ static void lib_link_all(FileData *fd, Main *bmain)
 /** \name Read User Preferences
  * \{ */
 
-static void direct_link_keymapitem(FileData *fd, wmKeyMapItem *kmi)
+static void direct_link_keymapitem(BlendDataReader *reader, wmKeyMapItem *kmi)
 {
-  kmi->properties = newdataadr(fd, kmi->properties);
-  IDP_DirectLinkGroup_OrFree(&kmi->properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+  BLO_read_data_address(reader, &kmi->properties);
+  IDP_DirectLinkGroup_OrFree(
+      &kmi->properties, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
   kmi->ptr = NULL;
   kmi->flag &= ~KMI_UPDATE;
 }
@@ -10246,63 +10250,69 @@ static BHead *read_userdef(BlendFileData *bfd, FileData *fd, BHead *bhead)
   /* read all data into fd->datamap */
   bhead = read_data_into_datamap(fd, bhead, "user def");
 
-  link_list(fd, &user->themes);
-  link_list(fd, &user->user_keymaps);
-  link_list(fd, &user->user_keyconfig_prefs);
-  link_list(fd, &user->user_menus);
-  link_list(fd, &user->addons);
-  link_list(fd, &user->autoexec_paths);
+  BlendDataReader reader_ = {fd};
+  BlendDataReader *reader = &reader_;
+
+  BLO_read_list(reader, &user->themes);
+  BLO_read_list(reader, &user->user_keymaps);
+  BLO_read_list(reader, &user->user_keyconfig_prefs);
+  BLO_read_list(reader, &user->user_menus);
+  BLO_read_list(reader, &user->addons);
+  BLO_read_list(reader, &user->autoexec_paths);
 
   for (keymap = user->user_keymaps.first; keymap; keymap = keymap->next) {
     keymap->modal_items = NULL;
     keymap->poll = NULL;
     keymap->flag &= ~KEYMAP_UPDATE;
 
-    link_list(fd, &keymap->diff_items);
-    link_list(fd, &keymap->items);
+    BLO_read_list(reader, &keymap->diff_items);
+    BLO_read_list(reader, &keymap->items);
 
     for (kmdi = keymap->diff_items.first; kmdi; kmdi = kmdi->next) {
-      kmdi->remove_item = newdataadr(fd, kmdi->remove_item);
-      kmdi->add_item = newdataadr(fd, kmdi->add_item);
+      BLO_read_data_address(reader, &kmdi->remove_item);
+      BLO_read_data_address(reader, &kmdi->add_item);
 
       if (kmdi->remove_item) {
-        direct_link_keymapitem(fd, kmdi->remove_item);
+        direct_link_keymapitem(reader, kmdi->remove_item);
       }
       if (kmdi->add_item) {
-        direct_link_keymapitem(fd, kmdi->add_item);
+        direct_link_keymapitem(reader, kmdi->add_item);
       }
     }
 
     for (kmi = keymap->items.first; kmi; kmi = kmi->next) {
-      direct_link_keymapitem(fd, kmi);
+      direct_link_keymapitem(reader, kmi);
     }
   }
 
   LISTBASE_FOREACH (wmKeyConfigPref *, kpt, &user->user_keyconfig_prefs) {
-    kpt->prop = newdataadr(fd, kpt->prop);
-    IDP_DirectLinkGroup_OrFree(&kpt->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+    BLO_read_data_address(reader, &kpt->prop);
+    IDP_DirectLinkGroup_OrFree(
+        &kpt->prop, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
   }
 
   LISTBASE_FOREACH (bUserMenu *, um, &user->user_menus) {
-    link_list(fd, &um->items);
+    BLO_read_list(reader, &um->items);
     LISTBASE_FOREACH (bUserMenuItem *, umi, &um->items) {
       if (umi->type == USER_MENU_TYPE_OPER

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list