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:
Diffstat (limited to 'source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc')
-rw-r--r--source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc33
1 files changed, 17 insertions, 16 deletions
diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc
index 5d9e94dcbcf..69ded192449 100644
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc
@@ -35,16 +35,23 @@ namespace blender::draw {
struct MeshExtract_EditUvElem_Data {
GPUIndexBufBuilder elb;
bool sync_selection;
+
+ MeshExtract_EditUvElem_Data(const MeshRenderData *mr)
+ {
+ sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0;
+ }
+
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("DRW:MeshExtract_EditUvElem_Data")
+#endif
};
static void *extract_edituv_tris_init(const MeshRenderData *mr,
struct MeshBatchCache *UNUSED(cache),
void *UNUSED(ibo))
{
- MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(
- MEM_callocN(sizeof(*data), __func__));
+ MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr);
GPU_indexbuf_init(&data->elb, GPU_PRIM_TRIS, mr->tri_len, mr->loop_len);
- data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0;
return data;
}
@@ -93,7 +100,7 @@ static void extract_edituv_tris_finish(const MeshRenderData *UNUSED(mr),
MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(_data);
GPUIndexBuf *ibo = static_cast<GPUIndexBuf *>(buf);
GPU_indexbuf_build_in_place(&data->elb, ibo);
- MEM_freeN(data);
+ delete data;
}
constexpr MeshExtract create_extractor_edituv_tris()
@@ -119,10 +126,8 @@ static void *extract_edituv_lines_init(const MeshRenderData *mr,
struct MeshBatchCache *UNUSED(cache),
void *UNUSED(ibo))
{
- MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(
- MEM_callocN(sizeof(*data), __func__));
+ MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr);
GPU_indexbuf_init(&data->elb, GPU_PRIM_LINES, mr->loop_len, mr->loop_len);
- data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0;
return data;
}
@@ -183,7 +188,7 @@ static void extract_edituv_lines_finish(const MeshRenderData *UNUSED(mr),
MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(_data);
GPUIndexBuf *ibo = static_cast<GPUIndexBuf *>(buf);
GPU_indexbuf_build_in_place(&data->elb, ibo);
- MEM_freeN(data);
+ delete data;
}
constexpr MeshExtract create_extractor_edituv_lines()
@@ -209,10 +214,8 @@ static void *extract_edituv_points_init(const MeshRenderData *mr,
struct MeshBatchCache *UNUSED(cache),
void *UNUSED(ibo))
{
- MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(
- MEM_callocN(sizeof(*data), __func__));
+ MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr);
GPU_indexbuf_init(&data->elb, GPU_PRIM_POINTS, mr->loop_len, mr->loop_len);
- data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0;
return data;
}
@@ -268,7 +271,7 @@ static void extract_edituv_points_finish(const MeshRenderData *UNUSED(mr),
MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(_data);
GPUIndexBuf *ibo = static_cast<GPUIndexBuf *>(buf);
GPU_indexbuf_build_in_place(&data->elb, ibo);
- MEM_freeN(data);
+ delete data;
}
constexpr MeshExtract create_extractor_edituv_points()
@@ -294,10 +297,8 @@ static void *extract_edituv_fdots_init(const MeshRenderData *mr,
struct MeshBatchCache *UNUSED(cache),
void *UNUSED(ibo))
{
- MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(
- MEM_callocN(sizeof(*data), __func__));
+ MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr);
GPU_indexbuf_init(&data->elb, GPU_PRIM_POINTS, mr->poly_len, mr->poly_len);
- data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0;
return data;
}
@@ -365,7 +366,7 @@ static void extract_edituv_fdots_finish(const MeshRenderData *UNUSED(mr),
MeshExtract_EditUvElem_Data *data = static_cast<MeshExtract_EditUvElem_Data *>(_data);
GPUIndexBuf *ibo = static_cast<GPUIndexBuf *>(buf);
GPU_indexbuf_build_in_place(&data->elb, ibo);
- MEM_freeN(data);
+ delete data;
}
constexpr MeshExtract create_extractor_edituv_fdots()