From bd3daeed5adfa5922668390ae460d85402ee5455 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 11 Jan 2017 13:43:33 +0100 Subject: [PATCH] Slightly more efficient PrintObject Layer destruction. --- xs/src/libslic3r/Layer.cpp | 5 ----- xs/src/libslic3r/Layer.hpp | 2 +- xs/src/libslic3r/PrintObject.cpp | 16 ++++++++++++---- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/xs/src/libslic3r/Layer.cpp b/xs/src/libslic3r/Layer.cpp index 929460169c..c40c036e7d 100644 --- a/xs/src/libslic3r/Layer.cpp +++ b/xs/src/libslic3r/Layer.cpp @@ -313,9 +313,4 @@ SupportLayer::SupportLayer(size_t id, PrintObject *object, coordf_t height, { } -SupportLayer::~SupportLayer() -{ -} - - } diff --git a/xs/src/libslic3r/Layer.hpp b/xs/src/libslic3r/Layer.hpp index a5ba3f804b..02cb196553 100644 --- a/xs/src/libslic3r/Layer.hpp +++ b/xs/src/libslic3r/Layer.hpp @@ -152,7 +152,7 @@ public: protected: SupportLayer(size_t id, PrintObject *object, coordf_t height, coordf_t print_z, coordf_t slice_z); - virtual ~SupportLayer(); + virtual ~SupportLayer() {} }; diff --git a/xs/src/libslic3r/PrintObject.cpp b/xs/src/libslic3r/PrintObject.cpp index c323f5d9db..56a45613f3 100644 --- a/xs/src/libslic3r/PrintObject.cpp +++ b/xs/src/libslic3r/PrintObject.cpp @@ -133,8 +133,12 @@ PrintObject::layer_count() const void PrintObject::clear_layers() { - for (int i = this->layers.size()-1; i >= 0; --i) - this->delete_layer(i); + for (size_t i = 0; i < this->layers.size(); ++ i) { + Layer *layer = this->layers[i]; + layer->upper_layer = layer->lower_layer = nullptr; + delete layer; + } + this->layers.clear(); } Layer* @@ -162,8 +166,12 @@ PrintObject::support_layer_count() const void PrintObject::clear_support_layers() { - for (int i = this->support_layers.size()-1; i >= 0; --i) - this->delete_support_layer(i); + for (size_t i = 0; i < this->support_layers.size(); ++ i) { + Layer *layer = this->support_layers[i]; + layer->upper_layer = layer->lower_layer = nullptr; + delete layer; + } + this->support_layers.clear(); } SupportLayer*