added missing locking against crashing in Overlays::~Overlays()

This commit is contained in:
Kai Ludwig 2014-05-24 21:22:34 +02:00
parent 3e671c1968
commit c832df0783

View file

@ -22,16 +22,26 @@ Overlays::Overlays() : _nextOverlayID(1) {
}
Overlays::~Overlays() {
QMap<unsigned int, Overlay*>::iterator it;
for (it = _overlays2D.begin(); it != _overlays2D.end(); ++it) {
delete _overlays2D.take(it.key());
}
for (it = _overlays3D.begin(); it != _overlays3D.end(); ++it) {
delete _overlays3D.take(it.key());
}
while (!_overlaysToDelete.isEmpty()) {
delete _overlaysToDelete.takeLast();
{
QWriteLocker lock(&_lock);
foreach(Overlay* thisOverlay, _overlays2D) {
delete thisOverlay;
}
_overlays2D.clear();
foreach(Overlay* thisOverlay, _overlays3D) {
delete thisOverlay;
}
_overlays3D.clear();
}
if (!_overlaysToDelete.isEmpty()) {
QWriteLocker lock(&_deleteLock);
do {
delete _overlaysToDelete.takeLast();
} while (!_overlaysToDelete.isEmpty());
}
}
void Overlays::init(QGLWidget* parent) {