[Bf-blender-cvs] [af64b0ad5f5] curve-nodes-modifier: Cleanup: Simplify curve eval cache
Hans Goudey
noreply at git.blender.org
Tue Jul 13 01:40:49 CEST 2021
Commit: af64b0ad5f561208af748dc2b383152207c1be2b
Author: Hans Goudey
Date: Tue Jul 6 16:22:09 2021 -0500
Branches: curve-nodes-modifier
https://developer.blender.org/rBaf64b0ad5f561208af748dc2b383152207c1be2b
Cleanup: Simplify curve eval cache
===================================================================
M source/blender/blenkernel/intern/displist.cc
M source/blender/depsgraph/intern/depsgraph_query_iter.cc
M source/blender/draw/intern/draw_cache_impl_curve.cc
M source/blender/makesdna/DNA_object_types.h
===================================================================
diff --git a/source/blender/blenkernel/intern/displist.cc b/source/blender/blenkernel/intern/displist.cc
index 1e9f22d588e..0bf9f1f3252 100644
--- a/source/blender/blenkernel/intern/displist.cc
+++ b/source/blender/blenkernel/intern/displist.cc
@@ -1548,8 +1548,6 @@ void BKE_displist_make_curveTypes(Depsgraph *depsgraph,
geometry_set.get_component_for_write<CurveComponent>();
}
- ob->runtime.curve_eval = (void *)geometry_set.get_curve_for_read();
-
ob->runtime.geometry_set_eval = new GeometrySet(std::move(geometry_set));
}
diff --git a/source/blender/depsgraph/intern/depsgraph_query_iter.cc b/source/blender/depsgraph/intern/depsgraph_query_iter.cc
index 5d7c51be562..2d4e5286e35 100644
--- a/source/blender/depsgraph/intern/depsgraph_query_iter.cc
+++ b/source/blender/depsgraph/intern/depsgraph_query_iter.cc
@@ -238,7 +238,6 @@ bool deg_iterator_components_step(BLI_Iterator *iter)
*temp_object = *data->geometry_component_owner;
temp_object->type = OB_CURVE;
temp_object->data = (void *)curve;
- temp_object->runtime.curve_eval = (void *)component->get_for_read();
temp_object->runtime.select_id = data->geometry_component_owner->runtime.select_id;
iter->current = temp_object;
return true;
diff --git a/source/blender/draw/intern/draw_cache_impl_curve.cc b/source/blender/draw/intern/draw_cache_impl_curve.cc
index 96c1a267d22..e427810d98f 100644
--- a/source/blender/draw/intern/draw_cache_impl_curve.cc
+++ b/source/blender/draw/intern/draw_cache_impl_curve.cc
@@ -255,7 +255,9 @@ static CurveRenderData *curve_render_data_create(Curve *cu, Object *object, cons
rdata->actvert = cu->actvert;
rdata->ob_curve_cache = object->runtime.curve_cache;
- rdata->curve_eval = (const CurveEval *)object->runtime.curve_eval;
+ if (object->runtime.geometry_set_eval != nullptr) {
+ rdata->curve_eval = object->runtime.geometry_set_eval->get_curve_for_read();
+ }
if (types & CU_DATATYPE_WIRE) {
if (rdata->curve_eval != nullptr) {
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index d4227fabe36..262d650c1ef 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -210,16 +210,6 @@ typedef struct Object_Runtime {
/** Runtime evaluated curve-specific data, not stored in the file. */
struct CurveCache *curve_cache;
- /**
- * A pointer to evaluated curve data owned by #geometry_set_eval (const CurveEval *).
- * Stored as a `void *` because DNA doesn't support const pointers right now.
- *
- * This is necessary because curve object data does not use CoW. Normally we use a "fake" CoW
- * in the geometry component, but for curve objects we must use the original #Curve in order to
- * display edit mode data, and the evaluated data cannot be stored in the original #Curve.
- */
- void *curve_eval;
-
unsigned short local_collections_bits;
short _pad2[3];
} Object_Runtime;
More information about the Bf-blender-cvs
mailing list