Fix memleak on Pixmap cache

as we load dives and dives, new DiveEvents will be created
but the transparent pixmap never deleted, also this makes
the transparent pixmap only for the correct event, not for
all of them.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-11-14 17:52:55 -02:00 committed by Dirk Hohndel
parent b800530bcd
commit 1055b5afd3
2 changed files with 7 additions and 8 deletions

View file

@ -20,12 +20,6 @@ DiveEventItem::DiveEventItem(QObject *parent) : DivePixmapItem(parent),
internalEvent(NULL)
{
setFlag(ItemIgnoresTransformations);
// create a narrow but somewhat tall, basically transparent pixmap
// that allows tooltips to work when we don't want to show a specific
// pixmap for an event, but want to show the event value in the tooltip
// (e.g. if there is heading data in every sample)
transparentPixmap = new QPixmap(4, 20);
transparentPixmap->fill(QColor::fromRgbF(1.0, 1.0, 1.0, 0.01));
}
@ -79,7 +73,13 @@ void DiveEventItem::setupPixmap()
// some dive computers have heading in every sample...
// set an "almost invisible" pixmap
// so we get the tooltip but not the clutter
setPixmap(*transparentPixmap);
// create a narrow but somewhat tall, basically transparent pixmap
// that allows tooltips to work when we don't want to show a specific
// pixmap for an event, but want to show the event value in the tooltip
// (e.g. if there is heading data in every sample)
QPixmap transparentPixmap(4, 20);
transparentPixmap.fill(QColor::fromRgbF(1.0, 1.0, 1.0, 0.01));
setPixmap(transparentPixmap);
} else if (event_is_gaschange(internalEvent)) {
if (internalEvent->gas.mix.he.permille)
setPixmap(EVENT_PIXMAP_BIGGER(":gaschangeTrimix"));

View file

@ -29,7 +29,6 @@ private:
DiveCartesianAxis *hAxis;
DivePlotDataModel *dataModel;
struct event *internalEvent;
QPixmap *transparentPixmap;
};
#endif // DIVEEVENTITEM_H