summaryrefslogtreecommitdiffstats
path: root/src/corelib/animation/qvariantanimation.cpp
diff options
context:
space:
mode:
authorJason Barron <jbarron@trolltech.com>2009-08-20 14:58:58 (GMT)
committerJason Barron <jbarron@trolltech.com>2009-08-20 14:58:58 (GMT)
commit851a858fcd28c35dff2ffbeffdb40f7ee69f45b4 (patch)
treef76f604982f127af7ef66d904038cdfa705ff3af /src/corelib/animation/qvariantanimation.cpp
parentefea248b4b725ca429793874eb168ad4b43c7994 (diff)
parentc0b24b7ce12387aff6e74b05b4060c61a58d87e0 (diff)
downloadQt-851a858fcd28c35dff2ffbeffdb40f7ee69f45b4.zip
Qt-851a858fcd28c35dff2ffbeffdb40f7ee69f45b4.tar.gz
Qt-851a858fcd28c35dff2ffbeffdb40f7ee69f45b4.tar.bz2
Merge commit 'qt/master'
Conflicts: examples/painting/svgviewer/files/bubbles.svg src/corelib/kernel/qobject.cpp src/network/kernel/qhostinfo.cpp tests/auto/qhostinfo/tst_qhostinfo.cpp
Diffstat (limited to 'src/corelib/animation/qvariantanimation.cpp')
-rw-r--r--src/corelib/animation/qvariantanimation.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
index fc11815..696a95a 100644
--- a/src/corelib/animation/qvariantanimation.cpp
+++ b/src/corelib/animation/qvariantanimation.cpp
@@ -137,7 +137,6 @@ QT_BEGIN_NAMESPACE
\sa currentValue
*/
-
static bool animationValueLessThan(const QVariantAnimation::KeyValue &p1, const QVariantAnimation::KeyValue &p2)
{
return p1.first < p2.first;
@@ -178,11 +177,8 @@ template<> Q_INLINE_TEMPLATE QLineF _q_interpolate(const QLineF &f, const QLineF
return QLineF( _q_interpolate(f.p1(), t.p1(), progress), _q_interpolate(f.p2(), t.p2(), progress));
}
-QVariantAnimationPrivate::QVariantAnimationPrivate() : duration(250), interpolator(&defaultInterpolator),
- changedSignalMask(1 << QVariantAnimation::staticMetaObject.indexOfSignal("valueChanged(QVariant)"))
-{
- //we keep the mask so that we emit valueChanged only when needed (for performance reasons)
-}
+QVariantAnimationPrivate::QVariantAnimationPrivate() : duration(250), interpolator(&defaultInterpolator)
+{ }
void QVariantAnimationPrivate::convertValues(int t)
{
@@ -278,7 +274,12 @@ void QVariantAnimationPrivate::setCurrentValueForProgress(const qreal progress)
localProgress);
qSwap(currentValue, ret);
q->updateCurrentValue(currentValue);
- if ((connectedSignals[0] & changedSignalMask) && currentValue != ret) {
+ static QBasicAtomicInt changedSignalIndex = Q_BASIC_ATOMIC_INITIALIZER(0);
+ if (!changedSignalIndex) {
+ //we keep the mask so that we emit valueChanged only when needed (for performance reasons)
+ changedSignalIndex.testAndSetRelaxed(0, signalIndex("valueChanged(QVariant)"));
+ }
+ if (isSignalConnected(changedSignalIndex) && currentValue != ret) {
//the value has changed
emit q->valueChanged(currentValue);
}