[Bf-blender-cvs] [0eb969dd99d] master: Refactor: use new api for direct linking screen and gpencil
Jacques Lucke
noreply at git.blender.org
Sat Jun 6 13:28:09 CEST 2020
Commit: 0eb969dd99db57d375d00ee8b67d25ea949709e7
Author: Jacques Lucke
Date: Sat Jun 6 13:20:20 2020 +0200
Branches: master
https://developer.blender.org/rB0eb969dd99db57d375d00ee8b67d25ea949709e7
Refactor: use new api for direct linking screen and gpencil
===================================================================
M source/blender/blenloader/intern/readfile.c
===================================================================
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index c4624939986..e7c3beaba7a 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7245,7 +7245,7 @@ static void lib_link_gpencil(FileData *fd, Main *UNUSED(bmain), bGPdata *gpd)
}
/* relinks grease-pencil data - used for direct_link and old file linkage */
-static void direct_link_gpencil(FileData *fd, bGPdata *gpd)
+static void direct_link_gpencil(BlendDataReader *reader, bGPdata *gpd)
{
bGPDpalette *palette;
@@ -7255,8 +7255,8 @@ static void direct_link_gpencil(FileData *fd, bGPdata *gpd)
}
/* relink animdata */
- gpd->adt = newdataadr(fd, gpd->adt);
- direct_link_animdata(fd, gpd->adt);
+ BLO_read_data_address(reader, &gpd->adt);
+ direct_link_animdata(reader->fd, gpd->adt);
/* Ensure full objectmode for linked grease pencil. */
if (gpd->id.lib != NULL) {
@@ -7274,45 +7274,44 @@ static void direct_link_gpencil(FileData *fd, bGPdata *gpd)
gpd->runtime.tot_cp_points = 0;
/* relink palettes (old palettes deprecated, only to convert old files) */
- link_list(fd, &gpd->palettes);
+ BLO_read_list(reader, &gpd->palettes);
if (gpd->palettes.first != NULL) {
for (palette = gpd->palettes.first; palette; palette = palette->next) {
- link_list(fd, &palette->colors);
+ BLO_read_list(reader, &palette->colors);
}
}
/* materials */
- gpd->mat = newdataadr(fd, gpd->mat);
- test_pointer_array(fd, (void **)&gpd->mat);
+ BLO_read_pointer_array(reader, (void **)&gpd->mat);
/* relink layers */
- link_list(fd, &gpd->layers);
+ BLO_read_list(reader, &gpd->layers);
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
/* relink frames */
- link_list(fd, &gpl->frames);
+ BLO_read_list(reader, &gpl->frames);
- gpl->actframe = newdataadr(fd, gpl->actframe);
+ BLO_read_data_address(reader, &gpl->actframe);
gpl->runtime.icon_id = 0;
/* Relink masks. */
- link_list(fd, &gpl->mask_layers);
+ BLO_read_list(reader, &gpl->mask_layers);
LISTBASE_FOREACH (bGPDframe *, gpf, &gpl->frames) {
/* relink strokes (and their points) */
- link_list(fd, &gpf->strokes);
+ BLO_read_list(reader, &gpf->strokes);
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
/* relink stroke points array */
- gps->points = newdataadr(fd, gps->points);
+ BLO_read_data_address(reader, &gps->points);
/* Relink geometry*/
- gps->triangles = newdataadr(fd, gps->triangles);
+ BLO_read_data_address(reader, &gps->triangles);
/* relink weight data */
if (gps->dvert) {
- gps->dvert = newdataadr(fd, gps->dvert);
- direct_link_dverts(fd, gps->totpoints, gps->dvert);
+ BLO_read_data_address(reader, &gps->dvert);
+ direct_link_dverts(reader->fd, gps->totpoints, gps->dvert);
}
}
}
@@ -7325,36 +7324,37 @@ static void direct_link_gpencil(FileData *fd, bGPdata *gpd)
/** \name Read Screen Area/Region (Screen Data)
* \{ */
-static void direct_link_panel_list(FileData *fd, ListBase *lb)
+static void direct_link_panel_list(BlendDataReader *reader, ListBase *lb)
{
- link_list(fd, lb);
+ BLO_read_list(reader, lb);
LISTBASE_FOREACH (Panel *, panel, lb) {
panel->runtime_flag = 0;
panel->activedata = NULL;
panel->type = NULL;
- direct_link_panel_list(fd, &panel->children);
+ direct_link_panel_list(reader, &panel->children);
}
}
-static void direct_link_region(FileData *fd, ARegion *region, int spacetype)
+static void direct_link_region(BlendDataReader *reader, ARegion *region, int spacetype)
{
uiList *ui_list;
- direct_link_panel_list(fd, ®ion->panels);
+ direct_link_panel_list(reader, ®ion->panels);
- link_list(fd, ®ion->panels_category_active);
+ BLO_read_list(reader, ®ion->panels_category_active);
- link_list(fd, ®ion->ui_lists);
+ BLO_read_list(reader, ®ion->ui_lists);
for (ui_list = region->ui_lists.first; ui_list; ui_list = ui_list->next) {
ui_list->type = NULL;
ui_list->dyn_data = NULL;
- ui_list->properties = newdataadr(fd, ui_list->properties);
- IDP_DirectLinkGroup_OrFree(&ui_list->properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+ BLO_read_data_address(reader, &ui_list->properties);
+ IDP_DirectLinkGroup_OrFree(
+ &ui_list->properties, (reader->fd->flags & FD_FLAGS_SWITCH_ENDIAN), reader->fd);
}
- link_list(fd, ®ion->ui_previews);
+ BLO_read_list(reader, ®ion->ui_previews);
if (spacetype == SPACE_EMPTY) {
/* unknown space type, don't leak regiondata */
@@ -7365,13 +7365,13 @@ static void direct_link_region(FileData *fd, ARegion *region, int spacetype)
region->regiondata = NULL;
}
else {
- region->regiondata = newdataadr(fd, region->regiondata);
+ BLO_read_data_address(reader, ®ion->regiondata);
if (region->regiondata) {
if (spacetype == SPACE_VIEW3D) {
RegionView3D *rv3d = region->regiondata;
- rv3d->localvd = newdataadr(fd, rv3d->localvd);
- rv3d->clipbb = newdataadr(fd, rv3d->clipbb);
+ BLO_read_data_address(reader, &rv3d->localvd);
+ BLO_read_data_address(reader, &rv3d->clipbb);
rv3d->depths = NULL;
rv3d->render_engine = NULL;
@@ -7402,13 +7402,13 @@ static void direct_link_region(FileData *fd, ARegion *region, int spacetype)
memset(®ion->drawrct, 0, sizeof(region->drawrct));
}
-static void direct_link_area(FileData *fd, ScrArea *area)
+static void direct_link_area(BlendDataReader *reader, ScrArea *area)
{
SpaceLink *sl;
ARegion *region;
- link_list(fd, &(area->spacedata));
- link_list(fd, &(area->regionbase));
+ BLO_read_list(reader, &(area->spacedata));
+ BLO_read_list(reader, &(area->regionbase));
BLI_listbase_clear(&area->handlers);
area->type = NULL; /* spacetype callbacks */
@@ -7420,7 +7420,7 @@ static void direct_link_area(FileData *fd, ScrArea *area)
area->flag &= ~AREA_FLAG_ACTIVE_TOOL_UPDATE;
- area->global = newdataadr(fd, area->global);
+ BLO_read_data_address(reader, &area->global);
/* if we do not have the spacetype registered we cannot
* free it, so don't allocate any new memory for such spacetypes. */
@@ -7432,7 +7432,7 @@ static void direct_link_area(FileData *fd, ScrArea *area)
}
for (region = area->regionbase.first; region; region = region->next) {
- direct_link_region(fd, region, area->spacetype);
+ direct_link_region(reader, region, area->spacetype);
}
/* accident can happen when read/save new file with older version */
@@ -7448,7 +7448,7 @@ static void direct_link_area(FileData *fd, ScrArea *area)
}
for (sl = area->spacedata.first; sl; sl = sl->next) {
- link_list(fd, &(sl->regionbase));
+ BLO_read_list(reader, &(sl->regionbase));
/* if we do not have the spacetype registered we cannot
* free it, so don't allocate any new memory for such spacetypes. */
@@ -7457,7 +7457,7 @@ static void direct_link_area(FileData *fd, ScrArea *area)
}
for (region = sl->regionbase.first; region; region = region->next) {
- direct_link_region(fd, region, sl->spacetype);
+ direct_link_region(reader, region, sl->spacetype);
}
if (sl->spacetype == SPACE_VIEW3D) {
@@ -7466,10 +7466,10 @@ static void direct_link_area(FileData *fd, ScrArea *area)
v3d->flag |= V3D_INVALID_BACKBUF;
if (v3d->gpd) {
- v3d->gpd = newdataadr(fd, v3d->gpd);
- direct_link_gpencil(fd, v3d->gpd);
+ BLO_read_data_address(reader, &v3d->gpd);
+ direct_link_gpencil(reader, v3d->gpd);
}
- v3d->localvd = newdataadr(fd, v3d->localvd);
+ BLO_read_data_address(reader, &v3d->localvd);
/* Runtime data */
v3d->runtime.properties_storage = NULL;
@@ -7481,20 +7481,20 @@ static void direct_link_area(FileData *fd, ScrArea *area)
}
v3d->shading.prev_type = OB_SOLID;
- direct_link_view3dshading(fd, &v3d->shading);
+ direct_link_view3dshading(reader->fd, &v3d->shading);
blo_do_versions_view3d_split_250(v3d, &sl->regionbase);
}
else if (sl->spacetype == SPACE_GRAPH) {
SpaceGraph *sipo = (SpaceGraph *)sl;
- sipo->ads = newdataadr(fd, sipo->ads);
+ BLO_read_data_address(reader, &sipo->ads);
BLI_listbase_clear(&sipo->runtime.ghost_curves);
}
else if (sl->spacetype == SPACE_NLA) {
SpaceNla *snla = (SpaceNla *)sl;
- snla->ads = newdataadr(fd, snla->ads);
+ BLO_read_data_address(reader, &snla->ads);
}
else if (sl->spacetype == SPACE_OUTLINER) {
SpaceOutliner *soops = (SpaceOutliner *)sl;
@@ -7503,10 +7503,10 @@ static void direct_link_area(FileData *fd, ScrArea *area)
* frees and use of freed memory. this could happen because of a
* bug fixed in revision 58959 where the treestore memory address
* was not unique */
- TreeStore *ts = newdataadr_no_us(fd, soops->treestore);
+ TreeStore *ts = newdataadr_no_us(reader->fd, soops->treestore);
soops->treestore = NULL;
if (ts) {
- TreeStoreElem *elems = newdataadr_no_us(fd, ts->data);
+ TreeStoreElem *elems = newdataadr_no_us(reader->fd, ts->data);
soops->treestore = BLI_mempool_create(
sizeof(TreeStoreElem), ts->usedelem, 512, BLI_MEMPOOL_ALLOW_ITER);
@@ -7548,11 +7548,11 @@ static void direct_link_area(FileData *fd, ScrArea *area)
SpaceNode *snode = (SpaceNode *)sl;
if (snode->gpd) {
- snode->gpd = newdataadr(fd, snode->gpd);
- direct_link_gpencil(fd, snode->gpd);
+ BLO_read_data_address(reader, &snode->gpd);
+ direct_link_gpencil(reader, snode->gpd);
}
- link_list(fd, &snode->treepath);
+ BLO_read_list(reader, &snode->treepath);
snode->edittree = NULL;
snode->iofsd = NULL;
BLI_listbase_clear(&snode->linkdrag);
@@ -7596,8 +7596,8 @@ static void direct_link_area(FileData *fd, ScrArea *area)
SpaceConsole *sconsole = (SpaceConsole *)sl;
ConsoleLine *cl, *cl_next;
- li
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list