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
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2020-06-07 12:58:58 +0300
committerJacques Lucke <jacques@blender.org>2020-06-07 12:58:58 +0300
commita7de01aaa9fc255af2e4b0c0d5ce5b9b62e54a0a (patch)
treec82e22972143d4896d3de4f55f1b5e66c4cc2ee5
parent5f7007a9623215e97d43f7cf0f54b904a02d9228 (diff)
Refactor: use new api for direct linking customdata
-rw-r--r--source/blender/blenloader/intern/readfile.c46
1 files changed, 24 insertions, 22 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 4b9c7a21f63..4eb6d80d37c 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4958,14 +4958,14 @@ static void direct_link_dverts(BlendDataReader *reader, int count, MDeformVert *
}
}
-static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps, int external)
+static void direct_link_mdisps(BlendDataReader *reader, int count, MDisps *mdisps, int external)
{
if (mdisps) {
int i;
for (i = 0; i < count; i++) {
- mdisps[i].disps = newdataadr(fd, mdisps[i].disps);
- mdisps[i].hidden = newdataadr(fd, mdisps[i].hidden);
+ BLO_read_data_address(reader, &mdisps[i].disps);
+ BLO_read_data_address(reader, &mdisps[i].hidden);
if (mdisps[i].totdisp && !mdisps[i].level) {
/* this calculation is only correct for loop mdisps;
@@ -4976,7 +4976,7 @@ static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps, int exte
mdisps[i].level = (int)(logf(gridsize - 1.0f) / (float)M_LN2) + 1;
}
- if ((fd->flags & FD_FLAGS_SWITCH_ENDIAN) && (mdisps[i].disps)) {
+ if (BLO_read_requires_endian_switch(reader) && (mdisps[i].disps)) {
/* DNA_struct_switch_endian doesn't do endian swap for (*disps)[] */
/* this does swap for data written at write_mdisps() - readfile.c */
BLI_endian_switch_float_array(*mdisps[i].disps, mdisps[i].totdisp * 3);
@@ -4988,7 +4988,9 @@ static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps, int exte
}
}
-static void direct_link_grid_paint_mask(FileData *fd, int count, GridPaintMask *grid_paint_mask)
+static void direct_link_grid_paint_mask(BlendDataReader *reader,
+ int count,
+ GridPaintMask *grid_paint_mask)
{
if (grid_paint_mask) {
int i;
@@ -4996,18 +4998,18 @@ static void direct_link_grid_paint_mask(FileData *fd, int count, GridPaintMask *
for (i = 0; i < count; i++) {
GridPaintMask *gpm = &grid_paint_mask[i];
if (gpm->data) {
- gpm->data = newdataadr(fd, gpm->data);
+ BLO_read_data_address(reader, &gpm->data);
}
}
}
}
/*this isn't really a public api function, so prototyped here*/
-static void direct_link_customdata(FileData *fd, CustomData *data, int count)
+static void direct_link_customdata(BlendDataReader *reader, CustomData *data, int count)
{
int i = 0;
- data->layers = newdataadr(fd, data->layers);
+ BLO_read_data_address(reader, &data->layers);
/* annoying workaround for bug [#31079] loading legacy files with
* no polygons _but_ have stale customdata */
@@ -5016,7 +5018,7 @@ static void direct_link_customdata(FileData *fd, CustomData *data, int count)
return;
}
- data->external = newdataadr(fd, data->external);
+ BLO_read_data_address(reader, &data->external);
while (i < data->totlayer) {
CustomDataLayer *layer = &data->layers[i];
@@ -5028,12 +5030,12 @@ static void direct_link_customdata(FileData *fd, CustomData *data, int count)
layer->flag &= ~CD_FLAG_NOFREE;
if (CustomData_verify_versions(data, i)) {
- layer->data = newdataadr(fd, layer->data);
+ BLO_read_data_address(reader, &layer->data);
if (layer->type == CD_MDISPS) {
- direct_link_mdisps(fd, count, layer->data, layer->flag & CD_FLAG_EXTERNAL);
+ direct_link_mdisps(reader, count, layer->data, layer->flag & CD_FLAG_EXTERNAL);
}
else if (layer->type == CD_GRID_PAINT_MASK) {
- direct_link_grid_paint_mask(fd, count, layer->data);
+ direct_link_grid_paint_mask(reader, count, layer->data);
}
i++;
}
@@ -5067,11 +5069,11 @@ static void direct_link_mesh(BlendDataReader *reader, Mesh *mesh)
* but for backwards compatibility in do_versions to work we do it here. */
direct_link_dverts(reader, mesh->totvert, mesh->dvert);
- direct_link_customdata(reader->fd, &mesh->vdata, mesh->totvert);
- direct_link_customdata(reader->fd, &mesh->edata, mesh->totedge);
- direct_link_customdata(reader->fd, &mesh->fdata, mesh->totface);
- direct_link_customdata(reader->fd, &mesh->ldata, mesh->totloop);
- direct_link_customdata(reader->fd, &mesh->pdata, mesh->totpoly);
+ direct_link_customdata(reader, &mesh->vdata, mesh->totvert);
+ direct_link_customdata(reader, &mesh->edata, mesh->totedge);
+ direct_link_customdata(reader, &mesh->fdata, mesh->totface);
+ direct_link_customdata(reader, &mesh->ldata, mesh->totloop);
+ direct_link_customdata(reader, &mesh->pdata, mesh->totpoly);
mesh->texflag &= ~ME_AUTOSPACE_EVALUATED;
mesh->edit_mesh = NULL;
@@ -5090,9 +5092,9 @@ static void direct_link_mesh(BlendDataReader *reader, Mesh *mesh)
BLO_read_list(reader, &mesh->mr->levels);
lvl = mesh->mr->levels.first;
- direct_link_customdata(reader->fd, &mesh->mr->vdata, lvl->totvert);
+ direct_link_customdata(reader, &mesh->mr->vdata, lvl->totvert);
direct_link_dverts(reader, lvl->totvert, CustomData_get(&mesh->mr->vdata, 0, CD_MDEFORMVERT));
- direct_link_customdata(reader->fd, &mesh->mr->fdata, lvl->totface);
+ direct_link_customdata(reader, &mesh->mr->fdata, lvl->totface);
BLO_read_data_address(reader, &mesh->mr->edge_flags);
BLO_read_data_address(reader, &mesh->mr->edge_creases);
@@ -9058,8 +9060,8 @@ static void direct_link_hair(BlendDataReader *reader, Hair *hair)
direct_link_animdata(reader, hair->adt);
/* Geometry */
- direct_link_customdata(reader->fd, &hair->pdata, hair->totpoint);
- direct_link_customdata(reader->fd, &hair->cdata, hair->totcurve);
+ direct_link_customdata(reader, &hair->pdata, hair->totpoint);
+ direct_link_customdata(reader, &hair->cdata, hair->totcurve);
BKE_hair_update_customdata_pointers(hair);
/* Materials */
@@ -9085,7 +9087,7 @@ static void direct_link_pointcloud(BlendDataReader *reader, PointCloud *pointclo
direct_link_animdata(reader, pointcloud->adt);
/* Geometry */
- direct_link_customdata(reader->fd, &pointcloud->pdata, pointcloud->totpoint);
+ direct_link_customdata(reader, &pointcloud->pdata, pointcloud->totpoint);
BKE_pointcloud_update_customdata_pointers(pointcloud);
/* Materials */