QStyleAnimation: fix threaded rendering
authorJ-P Nurmi <jpnurmi@digia.com>
Tue, 23 Oct 2012 08:53:40 +0000 (10:53 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 23 Oct 2012 09:41:47 +0000 (11:41 +0200)
Change-Id: I00875adf2e4b157a3f8b0b99e5280b1275635026
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
src/widgets/styles/qcommonstyle.cpp
src/widgets/styles/qstyleanimation.cpp

index 0e22a90..990245a 100644 (file)
@@ -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();
-    }
 }
 
 /*!
index 6173dc9..9f58c9d 100644 (file)
 
 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()