Merge branch 'master' into blender2.8
[blender.git] / source / blender / blenkernel / intern / curve.c
index 7c22a34c7d14afb976c6f4b5f9ef2b7175225577..2863a9250004b28a3853f73a4b631eef4a7be585 100644 (file)
@@ -52,7 +52,6 @@
 
 #include "BKE_animsys.h"
 #include "BKE_curve.h"
-#include "BKE_depsgraph.h"
 #include "BKE_displist.h"
 #include "BKE_font.h"
 #include "BKE_global.h"
@@ -64,6 +63,8 @@
 #include "BKE_object.h"
 #include "BKE_material.h"
 
+#include "DEG_depsgraph.h"
+
 /* globals */
 
 /* local */
@@ -126,6 +127,8 @@ void BKE_curve_free(Curve *cu)
 {
        BKE_animdata_free((ID *)cu, false);
 
+       BKE_curve_batch_cache_free(cu);
+
        BKE_nurbList_free(&cu->nurb);
        BKE_curve_editfont_free(cu);
 
@@ -206,6 +209,7 @@ Curve *BKE_curve_copy(Main *bmain, const Curve *cu)
        cun->strinfo = MEM_dupallocN(cu->strinfo);
        cun->tb = MEM_dupallocN(cu->tb);
        cun->bb = MEM_dupallocN(cu->bb);
+       cun->batch_cache = NULL;
 
        if (cu->key) {
                cun->key = BKE_key_copy(bmain, cu->key);
@@ -4598,7 +4602,7 @@ int BKE_curve_material_index_validate(Curve *cu)
        }
 
        if (!is_valid) {
-               DAG_id_tag_update(&cu->id, OB_RECALC_DATA);
+               DEG_id_tag_update(&cu->id, OB_RECALC_DATA);
                return true;
        }
        else {
@@ -4686,3 +4690,20 @@ void BKE_curve_eval_path(EvaluationContext *UNUSED(eval_ctx),
                printf("%s on %s\n", __func__, curve->id.name);
        }
 }
+
+/* Draw Engine */
+void (*BKE_curve_batch_cache_dirty_cb)(Curve *cu, int mode) = NULL;
+void (*BKE_curve_batch_cache_free_cb)(Curve *cu) = NULL;
+
+void BKE_curve_batch_cache_dirty(Curve *cu, int mode)
+{
+       if (cu->batch_cache) {
+               BKE_curve_batch_cache_dirty_cb(cu, mode);
+       }
+}
+void BKE_curve_batch_cache_free(Curve *cu)
+{
+       if (cu->batch_cache) {
+               BKE_curve_batch_cache_free_cb(cu);
+       }
+}
\ No newline at end of file