Delete temporal tags created in the CLI processor

When a DocumentExporter is used to export a specific range of frames
from the CLI processor, a temporal frame tag is created, we've to delete
that tag when the DocumentExporter is destroyed.
This commit is contained in:
David Capello 2016-05-31 15:07:26 -03:00
parent 9a0035e2a7
commit 67bbb22410
3 changed files with 15 additions and 3 deletions

View File

@ -307,6 +307,8 @@ bool CliProcessor::openFile(CliOpenFile& cof)
// Add document to exporter
if (m_exporter) {
FrameTag* frameTag = nullptr;
bool isTemporalTag = false;
if (!cof.frameTagName.empty()) {
frameTag = doc->sprite()->frameTags().getByName(cof.frameTagName);
}
@ -320,6 +322,7 @@ bool CliProcessor::openFile(CliOpenFile& cof)
frameTag = new FrameTag(base::convert_to<frame_t>(splitRange[0]),
base::convert_to<frame_t>(splitRange[1]));
isTemporalTag = true;
}
if (!cof.importLayer.empty()) {
@ -331,16 +334,16 @@ bool CliProcessor::openFile(CliOpenFile& cof)
}
}
if (foundLayer)
m_exporter->addDocument(doc, foundLayer, frameTag);
m_exporter->addDocument(doc, foundLayer, frameTag, isTemporalTag);
}
else if (cof.splitLayers) {
for (auto layer : doc->sprite()->layers()) {
if (layer->isVisible())
m_exporter->addDocument(doc, layer, frameTag);
m_exporter->addDocument(doc, layer, frameTag, isTemporalTag);
}
}
else {
m_exporter->addDocument(doc, nullptr, frameTag);
m_exporter->addDocument(doc, nullptr, frameTag, isTemporalTag);
}
}
}

View File

@ -354,6 +354,14 @@ DocumentExporter::DocumentExporter()
{
}
DocumentExporter::~DocumentExporter()
{
for (auto& item : m_documents) {
if (item.temporalTag)
delete item.frameTag;
}
}
Document* DocumentExporter::exportSheet()
{
// We output the metadata to std::cout if the user didn't specify a file.

View File

@ -36,6 +36,7 @@ namespace app {
};
DocumentExporter();
~DocumentExporter();
DataFormat dataFormat() const { return m_dataFormat; }
const std::string& dataFilename() { return m_dataFilename; }