Fix `render_hover_point` memory leaking by using `std::optional`
This commit is contained in:
parent
5f1714f02c
commit
d6524f8963
|
@ -113,7 +113,7 @@ bool GLGizmoBrimEars::is_use_point(const BrimPoint &point) const
|
||||||
void GLGizmoBrimEars::render_points(const Selection &selection, bool picking) const
|
void GLGizmoBrimEars::render_points(const Selection &selection, bool picking) const
|
||||||
{
|
{
|
||||||
auto editing_cache = m_editing_cache;
|
auto editing_cache = m_editing_cache;
|
||||||
if (render_hover_point != nullptr) { editing_cache.push_back(*render_hover_point); }
|
if (render_hover_point) { editing_cache.push_back(*render_hover_point); }
|
||||||
|
|
||||||
size_t cache_size = editing_cache.size();
|
size_t cache_size = editing_cache.size();
|
||||||
|
|
||||||
|
@ -308,10 +308,9 @@ bool GLGizmoBrimEars::gizmo_event(SLAGizmoEventType action, const Vec2d &mouse_p
|
||||||
Transform3d inverse_trsf = volume->get_instance_transformation().get_matrix(true).inverse();
|
Transform3d inverse_trsf = volume->get_instance_transformation().get_matrix(true).inverse();
|
||||||
std::pair<Vec3f, Vec3f> pos_and_normal;
|
std::pair<Vec3f, Vec3f> pos_and_normal;
|
||||||
if (unproject_on_mesh2(mouse_position, pos_and_normal)) {
|
if (unproject_on_mesh2(mouse_position, pos_and_normal)) {
|
||||||
render_hover_point = new CacheEntry(BrimPoint(pos_and_normal.first, m_new_point_head_diameter / 2.f), false, (inverse_trsf * m_world_normal).cast<float>(), true);
|
render_hover_point = CacheEntry(BrimPoint(pos_and_normal.first, m_new_point_head_diameter / 2.f), false, (inverse_trsf * m_world_normal).cast<float>(), true);
|
||||||
} else {
|
} else {
|
||||||
delete render_hover_point;
|
render_hover_point.reset();
|
||||||
render_hover_point = nullptr;
|
|
||||||
}
|
}
|
||||||
} else if (action == SLAGizmoEventType::LeftDown && (shift_down || alt_down || control_down)) {
|
} else if (action == SLAGizmoEventType::LeftDown && (shift_down || alt_down || control_down)) {
|
||||||
// left down with shift - show the selection rectangle:
|
// left down with shift - show the selection rectangle:
|
||||||
|
|
|
@ -107,7 +107,7 @@ private:
|
||||||
const Vec3d m_world_normal = {0, 0, 1};
|
const Vec3d m_world_normal = {0, 0, 1};
|
||||||
std::map<GLVolume*, std::shared_ptr<PickRaycaster>> m_mesh_raycaster_map;
|
std::map<GLVolume*, std::shared_ptr<PickRaycaster>> m_mesh_raycaster_map;
|
||||||
GLVolume* m_last_hit_volume;
|
GLVolume* m_last_hit_volume;
|
||||||
CacheEntry* render_hover_point = nullptr;
|
std::optional<CacheEntry> render_hover_point;
|
||||||
|
|
||||||
bool m_link_text_hover = false;
|
bool m_link_text_hover = false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue