Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2020-06-07 12:30:32 +0300
committerJacques Lucke <jacques@blender.org>2020-06-07 12:30:32 +0300
commitb8afd4e8bb1136d9e0229ec6a85bef1cc7d884e7 (patch)
tree1b4bfa324e1e63c0508fbe564913e5877998d5a2 /source
parentf0f666541e2001a9da526c5cb4ce0b573488e17f (diff)
Refactor: use new api for direct linking bones, view layer and userdef
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenloader/intern/readfile.c124
1 files changed, 67 insertions, 57 deletions
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_OPERATOR) {
bUserMenuItem_Op *umi_op = (bUserMenuItem_Op *)umi;
- umi_op->prop = newdataadr(fd, umi_op->prop);
- IDP_DirectLinkGroup_OrFree(&umi_op->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+ BLO_read_data_address(reader, &umi_op->prop);
+ IDP_DirectLinkGroup_OrFree(
+ &umi_op->prop, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
}
}
}
for (addon = user->addons.first; addon; addon = addon->next) {
- addon->prop = newdataadr(fd, addon->prop);
- IDP_DirectLinkGroup_OrFree(&addon->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+ BLO_read_data_address(reader, &addon->prop);
+ IDP_DirectLinkGroup_OrFree(
+ &addon->prop, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
}
// XXX
user->uifonts.first = user->uifonts.last = NULL;
- link_list(fd, &user->uistyles);
+ BLO_read_list(reader, &user->uistyles);
/* Don't read the active app template, use the default one. */
user->app_template[0] = '\0';