mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 01:03:38 +02:00
Remove all overlays from Scene on desctruction
This commit is contained in:
parent
3f5b115c67
commit
b37a023041
1 changed files with 18 additions and 8 deletions
|
@ -83,6 +83,13 @@ Overlays::~Overlays() {
|
|||
|
||||
{
|
||||
QWriteLocker lock(&_lock);
|
||||
QWriteLocker deleteLock(&_deleteLock);
|
||||
foreach(Overlay::Pointer overlay, _overlaysHUD) {
|
||||
_overlaysToDelete.push_back(overlay);
|
||||
}
|
||||
foreach(Overlay::Pointer overlay, _overlaysWorld) {
|
||||
_overlaysToDelete.push_back(overlay);
|
||||
}
|
||||
_overlaysHUD.clear();
|
||||
_overlaysWorld.clear();
|
||||
}
|
||||
|
@ -111,17 +118,20 @@ void Overlays::update(float deltatime) {
|
|||
|
||||
void Overlays::cleanupOverlaysToDelete() {
|
||||
if (!_overlaysToDelete.isEmpty()) {
|
||||
QWriteLocker lock(&_deleteLock);
|
||||
render::PendingChanges pendingChanges;
|
||||
|
||||
do {
|
||||
Overlay::Pointer overlay = _overlaysToDelete.takeLast();
|
||||
{
|
||||
QWriteLocker lock(&_deleteLock);
|
||||
|
||||
auto itemID = overlay->getRenderItemID();
|
||||
if (itemID != render::Item::INVALID_ITEM_ID) {
|
||||
pendingChanges.removeItem(itemID);
|
||||
}
|
||||
} while (!_overlaysToDelete.isEmpty());
|
||||
do {
|
||||
Overlay::Pointer overlay = _overlaysToDelete.takeLast();
|
||||
|
||||
auto itemID = overlay->getRenderItemID();
|
||||
if (itemID != render::Item::INVALID_ITEM_ID) {
|
||||
pendingChanges.removeItem(itemID);
|
||||
}
|
||||
} while (!_overlaysToDelete.isEmpty());
|
||||
}
|
||||
|
||||
if (pendingChanges._removedItems.size() > 0) {
|
||||
render::ScenePointer scene = Application::getInstance()->getMain3DScene();
|
||||
|
|
Loading…
Reference in a new issue