diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2012-10-23 10:53:40 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-23 11:41:47 +0200 |
commit | 7abf6234436aee377d15f9f2f1d37ee7daf7464e (patch) | |
tree | c32cc20bc12d473746a5f225fb207e1cf772e0c6 /src/widgets | |
parent | 2e2133247677fbdf81741badf523a00612826a37 (diff) |
QStyleAnimation: fix threaded rendering
Change-Id: I00875adf2e4b157a3f8b0b99e5280b1275635026
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/styles/qcommonstyle.cpp | 5 | ||||
-rw-r--r-- | src/widgets/styles/qstyleanimation.cpp | 7 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 0e22a90a4b..990245a113 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -1073,7 +1073,6 @@ void QCommonStylePrivate::startAnimation(QStyleAnimation *animation) const { Q_Q(const QCommonStyle); stopAnimation(animation->target()); - q->connect(animation, SIGNAL(finished()), SLOT(_q_removeAnimation()), Qt::UniqueConnection); q->connect(animation, SIGNAL(destroyed()), SLOT(_q_removeAnimation()), Qt::UniqueConnection); animations.insert(animation->target(), animation); animation->start(); @@ -1096,10 +1095,8 @@ void QCommonStylePrivate::_q_removeAnimation() { Q_Q(QCommonStyle); QObject *animation = q->sender(); - if (animation) { + if (animation) animations.remove(animation->parent()); - animation->deleteLater(); - } } /*! diff --git a/src/widgets/styles/qstyleanimation.cpp b/src/widgets/styles/qstyleanimation.cpp index 6173dc9ddb..9f58c9d51f 100644 --- a/src/widgets/styles/qstyleanimation.cpp +++ b/src/widgets/styles/qstyleanimation.cpp @@ -47,9 +47,14 @@ QT_BEGIN_NAMESPACE -QStyleAnimation::QStyleAnimation(QObject *target) : QAbstractAnimation(target), +QStyleAnimation::QStyleAnimation(QObject *target) : QAbstractAnimation(), _startTime(QTime::currentTime()) { + if (target) { + moveToThread(target->thread()); + setParent(target); + } + connect(this, SIGNAL(finished()), SLOT(deleteLater())); } QStyleAnimation::~QStyleAnimation() |