Cleanup: free plot data on exit

Some widgets copy the full plot info. Free these data on exit to
prevent monstrous valgrind reports.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-07-15 20:41:42 +02:00 committed by Dirk Hohndel
parent 05a5a06fd3
commit 4e86d99714
6 changed files with 18 additions and 0 deletions

View file

@ -178,6 +178,11 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent),
#endif
}
ProfileWidget2::~ProfileWidget2()
{
free_plot_info_data(&plotInfo);
}
#ifndef SUBSURFACE_MOBILE
void ProfileWidget2::addActionShortcut(const Qt::Key shortcut, void (ProfileWidget2::*slot)())
{

View file

@ -73,6 +73,7 @@ public:
};
ProfileWidget2(QWidget *parent = 0);
~ProfileWidget2();
void resetZoom();
void scale(qreal sx, qreal sy);
void plotDive(const struct dive *d = 0, bool force = false, bool clearPictures = false, bool instant = false);

View file

@ -32,6 +32,11 @@ TankItem::TankItem(QObject *parent) :
hAxis = nullptr;
}
TankItem::~TankItem()
{
free(pInfoEntry);
}
void TankItem::setData(DivePlotDataModel *model, struct plot_info *plotInfo, struct dive *d)
{
// If there is nothing to plot, quit early.

View file

@ -15,6 +15,7 @@ class TankItem : public QObject, public QGraphicsRectItem
public:
explicit TankItem(QObject *parent = 0);
~TankItem();
void setHorizontalAxis(DiveCartesianAxis *horizontal);
void setData(DivePlotDataModel *model, struct plot_info *plotInfo, struct dive *d);

View file

@ -14,6 +14,11 @@ DivePlotDataModel::DivePlotDataModel(QObject *parent) :
memset(&plot_deco_state, 0, sizeof(struct deco_state));
}
DivePlotDataModel::~DivePlotDataModel()
{
free_plot_info_data(&pInfo);
}
int DivePlotDataModel::columnCount(const QModelIndex&) const
{
return COLUMNS;

View file

@ -73,6 +73,7 @@ public:
COLUMNS
};
explicit DivePlotDataModel(QObject *parent = 0);
~DivePlotDataModel();
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;