[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