Animation safety.

Took 12 minutes
This commit is contained in:
Lukas Brübach 2025-09-15 19:11:56 +02:00
parent f4fbe90a72
commit 7b47b5992f
2 changed files with 5 additions and 2 deletions

View file

@ -54,9 +54,9 @@ void CardItem::prepareDelete()
void CardItem::deleteLater() void CardItem::deleteLater()
{ {
prepareDelete();
if (scene()) if (scene())
static_cast<GameScene *>(scene())->unregisterAnimationItem(this); static_cast<GameScene *>(scene())->unregisterAnimationItem(this);
prepareDelete();
AbstractCardItem::deleteLater(); AbstractCardItem::deleteLater();
} }

View file

@ -304,8 +304,11 @@ void GameScene::timerEvent(QTimerEvent * /*event*/)
QMutableSetIterator<CardItem *> i(cardsToAnimate); QMutableSetIterator<CardItem *> i(cardsToAnimate);
while (i.hasNext()) { while (i.hasNext()) {
i.next(); i.next();
if (!i.value()->animationEvent()) if (i.value() == nullptr) {
i.remove(); i.remove();
} else if (!i.value()->animationEvent()) {
i.remove();
}
} }
if (cardsToAnimate.isEmpty()) if (cardsToAnimate.isEmpty())
animationTimer->stop(); animationTimer->stop();