Qt 4.8 crash fix
This commit is contained in:
parent
c7fa2fe985
commit
61f5cd478d
3 changed files with 13 additions and 7 deletions
|
@ -1577,10 +1577,9 @@ void Player::delCounter(int counterId)
|
||||||
AbstractCounter *c = counters.value(counterId, 0);
|
AbstractCounter *c = counters.value(counterId, 0);
|
||||||
if (!c)
|
if (!c)
|
||||||
return;
|
return;
|
||||||
if (c->getName() == "life")
|
|
||||||
playerTarget->delCounter();
|
|
||||||
counters.remove(counterId);
|
|
||||||
c->delCounter();
|
c->delCounter();
|
||||||
|
counters.remove(counterId);
|
||||||
rearrangeCounters();
|
rearrangeCounters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1590,7 +1589,6 @@ void Player::clearCounters()
|
||||||
while (counterIterator.hasNext())
|
while (counterIterator.hasNext())
|
||||||
counterIterator.next().value()->delCounter();
|
counterIterator.next().value()->delCounter();
|
||||||
counters.clear();
|
counters.clear();
|
||||||
playerTarget->delCounter();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrowItem *Player::addArrow(const ServerInfo_Arrow &arrow)
|
ArrowItem *Player::addArrow(const ServerInfo_Arrow &arrow)
|
||||||
|
|
|
@ -56,6 +56,13 @@ PlayerTarget::PlayerTarget(Player *_owner, QGraphicsItem *parentItem)
|
||||||
fullPixmap = QPixmap();
|
fullPixmap = QPixmap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlayerTarget::~PlayerTarget()
|
||||||
|
{
|
||||||
|
// Explicit deletion is necessary in spite of parent/child relationship
|
||||||
|
// as we need this object to be alive to receive the destroyed() signal.
|
||||||
|
delete playerCounter;
|
||||||
|
}
|
||||||
|
|
||||||
QRectF PlayerTarget::boundingRect() const
|
QRectF PlayerTarget::boundingRect() const
|
||||||
{
|
{
|
||||||
return QRectF(0, 0, 160, 64);
|
return QRectF(0, 0, 160, 64);
|
||||||
|
@ -136,12 +143,12 @@ AbstractCounter *PlayerTarget::addCounter(int _counterId, const QString &_name,
|
||||||
|
|
||||||
playerCounter = new PlayerCounter(owner, _counterId, _name, _value, this);
|
playerCounter = new PlayerCounter(owner, _counterId, _name, _value, this);
|
||||||
playerCounter->setPos(boundingRect().width() - playerCounter->boundingRect().width(), boundingRect().height() - playerCounter->boundingRect().height());
|
playerCounter->setPos(boundingRect().width() - playerCounter->boundingRect().width(), boundingRect().height() - playerCounter->boundingRect().height());
|
||||||
connect(playerCounter, SIGNAL(destroyed()), this, SLOT(delCounter()));
|
connect(playerCounter, SIGNAL(destroyed()), this, SLOT(counterDeleted()));
|
||||||
|
|
||||||
return playerCounter;
|
return playerCounter;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerTarget::delCounter()
|
void PlayerTarget::counterDeleted()
|
||||||
{
|
{
|
||||||
playerCounter = 0;
|
playerCounter = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,12 +22,13 @@ private:
|
||||||
QPixmap fullPixmap;
|
QPixmap fullPixmap;
|
||||||
PlayerCounter *playerCounter;
|
PlayerCounter *playerCounter;
|
||||||
public slots:
|
public slots:
|
||||||
void delCounter();
|
void counterDeleted();
|
||||||
public:
|
public:
|
||||||
enum { Type = typePlayerTarget };
|
enum { Type = typePlayerTarget };
|
||||||
int type() const { return Type; }
|
int type() const { return Type; }
|
||||||
|
|
||||||
PlayerTarget(Player *_player = 0, QGraphicsItem *parentItem = 0);
|
PlayerTarget(Player *_player = 0, QGraphicsItem *parentItem = 0);
|
||||||
|
~PlayerTarget();
|
||||||
QRectF boundingRect() const;
|
QRectF boundingRect() const;
|
||||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue