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);
|
||||
if (!c)
|
||||
return;
|
||||
if (c->getName() == "life")
|
||||
playerTarget->delCounter();
|
||||
counters.remove(counterId);
|
||||
|
||||
c->delCounter();
|
||||
counters.remove(counterId);
|
||||
rearrangeCounters();
|
||||
}
|
||||
|
||||
|
@ -1590,7 +1589,6 @@ void Player::clearCounters()
|
|||
while (counterIterator.hasNext())
|
||||
counterIterator.next().value()->delCounter();
|
||||
counters.clear();
|
||||
playerTarget->delCounter();
|
||||
}
|
||||
|
||||
ArrowItem *Player::addArrow(const ServerInfo_Arrow &arrow)
|
||||
|
|
|
@ -56,6 +56,13 @@ PlayerTarget::PlayerTarget(Player *_owner, QGraphicsItem *parentItem)
|
|||
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
|
||||
{
|
||||
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->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;
|
||||
}
|
||||
|
||||
void PlayerTarget::delCounter()
|
||||
void PlayerTarget::counterDeleted()
|
||||
{
|
||||
playerCounter = 0;
|
||||
}
|
||||
|
|
|
@ -22,12 +22,13 @@ private:
|
|||
QPixmap fullPixmap;
|
||||
PlayerCounter *playerCounter;
|
||||
public slots:
|
||||
void delCounter();
|
||||
void counterDeleted();
|
||||
public:
|
||||
enum { Type = typePlayerTarget };
|
||||
int type() const { return Type; }
|
||||
|
||||
PlayerTarget(Player *_player = 0, QGraphicsItem *parentItem = 0);
|
||||
~PlayerTarget();
|
||||
QRectF boundingRect() const;
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
|
||||
|
|
Loading…
Reference in a new issue