remove stuff from TabGame and GameScene dtors

This commit is contained in:
RickyRister 2025-01-19 23:53:37 -08:00
parent 090cc8c144
commit 8cacbb5722
2 changed files with 8 additions and 8 deletions

View file

@ -189,14 +189,7 @@ void TabGame::emitUserEvent()
TabGame::~TabGame() TabGame::~TabGame()
{ {
scene->clearViews();
delete replay; delete replay;
QMapIterator<int, Player *> i(players);
while (i.hasNext()) {
delete i.next().value();
}
} }
void TabGame::updatePlayerListDockTitle() void TabGame::updatePlayerListDockTitle()

View file

@ -29,6 +29,13 @@ GameScene::GameScene(PhasesToolbar *_phasesToolbar, QObject *parent)
GameScene::~GameScene() GameScene::~GameScene()
{ {
delete animationTimer; delete animationTimer;
// DO NOT call clearViews() here
// clearViews calls close() on the zoneViews, which sends signals; sending signals in destructors leads to segfaults
// deleteLater() deletes the zoneView without allowing it to send signals
for (const auto &zoneView : zoneViews) {
zoneView->deleteLater();
}
} }
void GameScene::retranslateUi() void GameScene::retranslateUi()
@ -76,7 +83,7 @@ void GameScene::rearrange()
QListIterator<Player *> playersIter(players); QListIterator<Player *> playersIter(players);
while (playersIter.hasNext()) { while (playersIter.hasNext()) {
Player *p = playersIter.next(); Player *p = playersIter.next();
if (!p->getConceded()) { if (p && !p->getConceded()) {
playersPlaying.append(p); playersPlaying.append(p);
if (!firstPlayerFound && (p->getLocal())) { if (!firstPlayerFound && (p->getLocal())) {
firstPlayerIndex = playersPlaying.size() - 1; firstPlayerIndex = playersPlaying.size() - 1;