aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-06-03 20:30:49 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-10 13:47:15 +0200
commit6f7bb92e5df069716bef9639c965b4c8a9aaaabf (patch)
tree8971961afb6b046dcbddb3ba6c7778b1e3f7b2da
parenta597b4c19f372b65773bb58539b1dfb362f12fdc (diff)
Avoid string-based lookup in IS_SIGNAL_CONNECTED
Specify the signal as a member function suitable for passing to QMetaMethod::fromSignal(), and use the new function QMetaObjectPrivate::signalIndex(QMetaMethod) to get the index in the signal range. Change-Id: If16daa24c2699f7749a17decb611cf395d89d0c4 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
-rw-r--r--src/particles/qquickcustomaffector.cpp2
-rw-r--r--src/particles/qquickparticleaffector.cpp2
-rw-r--r--src/particles/qquickparticleemitter.cpp2
-rw-r--r--src/particles/qquicktrailemitter.cpp2
-rw-r--r--src/qml/qml/qqmlglobal_p.h14
-rw-r--r--src/quick/items/context2d/qquickcanvasitem.cpp4
-rw-r--r--src/quick/items/qquickmousearea.cpp8
-rw-r--r--src/quick/items/qquicktext.cpp4
-rw-r--r--src/quick/items/qquickvisualdatamodel.cpp7
-rw-r--r--src/quick/items/qquickvisualdatamodel_p_p.h1
10 files changed, 23 insertions, 23 deletions
diff --git a/src/particles/qquickcustomaffector.cpp b/src/particles/qquickcustomaffector.cpp
index 72b1536c54..819dd128fa 100644
--- a/src/particles/qquickcustomaffector.cpp
+++ b/src/particles/qquickcustomaffector.cpp
@@ -103,7 +103,7 @@ QQuickCustomAffector::QQuickCustomAffector(QQuickItem *parent) :
bool QQuickCustomAffector::isAffectConnected()
{
- IS_SIGNAL_CONNECTED(this, "affectParticles(QQmlV8Handle,qreal)");
+ IS_SIGNAL_CONNECTED(this, QQuickCustomAffector, affectParticles, (QQmlV8Handle,qreal));
}
void QQuickCustomAffector::affectSystem(qreal dt)
diff --git a/src/particles/qquickparticleaffector.cpp b/src/particles/qquickparticleaffector.cpp
index 978c53e9a2..61396b1579 100644
--- a/src/particles/qquickparticleaffector.cpp
+++ b/src/particles/qquickparticleaffector.cpp
@@ -135,7 +135,7 @@ QQuickParticleAffector::QQuickParticleAffector(QQuickItem *parent) :
bool QQuickParticleAffector::isAffectedConnected()
{
- IS_SIGNAL_CONNECTED(this, "affected(qreal,qreal)");
+ IS_SIGNAL_CONNECTED(this, QQuickParticleAffector, affected, (qreal,qreal));
}
diff --git a/src/particles/qquickparticleemitter.cpp b/src/particles/qquickparticleemitter.cpp
index eb965a7f81..6e53b0940c 100644
--- a/src/particles/qquickparticleemitter.cpp
+++ b/src/particles/qquickparticleemitter.cpp
@@ -255,7 +255,7 @@ QQuickParticleEmitter::~QQuickParticleEmitter()
bool QQuickParticleEmitter::isEmitConnected()
{
- IS_SIGNAL_CONNECTED(this, "emitParticles(QQmlV8Handle)");
+ IS_SIGNAL_CONNECTED(this, QQuickParticleEmitter, emitParticles, (QQmlV8Handle));
}
void QQuickParticleEmitter::componentComplete()
diff --git a/src/particles/qquicktrailemitter.cpp b/src/particles/qquicktrailemitter.cpp
index e9d86118c0..68b43a0e99 100644
--- a/src/particles/qquicktrailemitter.cpp
+++ b/src/particles/qquicktrailemitter.cpp
@@ -128,7 +128,7 @@ QQuickTrailEmitter::QQuickTrailEmitter(QQuickItem *parent) :
bool QQuickTrailEmitter::isEmitFollowConnected()
{
- IS_SIGNAL_CONNECTED(this, "emitFollowParticles(QQmlV8Handle,QQmlV8Handle)");
+ IS_SIGNAL_CONNECTED(this, QQuickTrailEmitter, emitFollowParticles, (QQmlV8Handle,QQmlV8Handle));
}
void QQuickTrailEmitter::recalcParticlesPerSecond(){
diff --git a/src/qml/qml/qqmlglobal_p.h b/src/qml/qml/qqmlglobal_p.h
index 3ed7286ed9..75974a4e7c 100644
--- a/src/qml/qml/qqmlglobal_p.h
+++ b/src/qml/qml/qqmlglobal_p.h
@@ -45,6 +45,7 @@
#include <private/qtqmlglobal_p.h>
#include <QtCore/QObject>
#include <private/qqmlpropertycache_p.h>
+#include <private/qmetaobject_p.h>
QT_BEGIN_HEADER
@@ -165,16 +166,13 @@ T qmlobject_cast(QObject *object)
bool Q_QML_PRIVATE_EXPORT QQml_isSignalConnected(QObject*, int, int);
-#define IS_SIGNAL_CONNECTED(Sender, Signal) \
+#define IS_SIGNAL_CONNECTED(Sender, SenderType, Name, Arguments) \
do { \
QObject *sender = (Sender); \
- const char *signal = (Signal); \
- static int signalIdx = -1; \
- static int methodIdx = -1; \
- if (signalIdx < 0) { \
- signalIdx = QObjectPrivate::get(sender)->signalIndex(signal); \
- methodIdx = sender->metaObject()->indexOfSignal(signal); \
- } \
+ void (SenderType::*signal)Arguments = &SenderType::Name; \
+ static QMetaMethod method = QMetaMethod::fromSignal(signal); \
+ static int signalIdx = QMetaObjectPrivate::signalIndex(method); \
+ static int methodIdx = method.methodIndex(); \
return QQml_isSignalConnected(sender, signalIdx, methodIdx); \
} while (0)
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp
index 88f0fd11ca..24d71acf26 100644
--- a/src/quick/items/context2d/qquickcanvasitem.cpp
+++ b/src/quick/items/context2d/qquickcanvasitem.cpp
@@ -556,7 +556,7 @@ QQuickCanvasContext* QQuickCanvasItem::rawContext() const
bool QQuickCanvasItem::isPaintConnected()
{
- IS_SIGNAL_CONNECTED(this, "paint(QRect)");
+ IS_SIGNAL_CONNECTED(this, QQuickCanvasItem, paint, (const QRect &));
}
void QQuickCanvasItem::sceneGraphInitialized()
@@ -1074,4 +1074,4 @@ QRect QQuickCanvasItem::tiledRect(const QRectF &window, const QSize &tileSize)
the Canvas has been rendered.
*/
-QT_END_NAMESPACE \ No newline at end of file
+QT_END_NAMESPACE
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
index e561976553..c1d1c9dd8d 100644
--- a/src/quick/items/qquickmousearea.cpp
+++ b/src/quick/items/qquickmousearea.cpp
@@ -220,25 +220,25 @@ void QQuickMouseAreaPrivate::saveEvent(QMouseEvent *event)
bool QQuickMouseAreaPrivate::isPressAndHoldConnected()
{
Q_Q(QQuickMouseArea);
- IS_SIGNAL_CONNECTED(q, "pressAndHold(QQuickMouseEvent*)");
+ IS_SIGNAL_CONNECTED(q, QQuickMouseArea, pressAndHold, (QQuickMouseEvent *));
}
bool QQuickMouseAreaPrivate::isDoubleClickConnected()
{
Q_Q(QQuickMouseArea);
- IS_SIGNAL_CONNECTED(q, "doubleClicked(QQuickMouseEvent*)");
+ IS_SIGNAL_CONNECTED(q, QQuickMouseArea, doubleClicked, (QQuickMouseEvent *));
}
bool QQuickMouseAreaPrivate::isClickConnected()
{
Q_Q(QQuickMouseArea);
- IS_SIGNAL_CONNECTED(q, "clicked(QQuickMouseEvent*)");
+ IS_SIGNAL_CONNECTED(q, QQuickMouseArea, clicked, (QQuickMouseEvent *));
}
bool QQuickMouseAreaPrivate::isWheelConnected()
{
Q_Q(QQuickMouseArea);
- IS_SIGNAL_CONNECTED(q, "wheel(QQuickWheelEvent*)");
+ IS_SIGNAL_CONNECTED(q, QQuickMouseArea, wheel, (QQuickWheelEvent *));
}
void QQuickMouseAreaPrivate::propagate(QQuickMouseEvent* event, PropagateType t)
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
index 1f16cbdb51..4ab56494a0 100644
--- a/src/quick/items/qquicktext.cpp
+++ b/src/quick/items/qquicktext.cpp
@@ -595,7 +595,7 @@ void QQuickText::doLayout()
bool QQuickTextPrivate::isLineLaidOutConnected()
{
Q_Q(QQuickText);
- IS_SIGNAL_CONNECTED(q, "lineLaidOut(QQuickTextLine*)");
+ IS_SIGNAL_CONNECTED(q, QQuickText, lineLaidOut, (QQuickTextLine *));
}
void QQuickTextPrivate::setupCustomLineGeometry(QTextLine &line, qreal &height, int lineOffset)
@@ -2422,7 +2422,7 @@ QString QQuickTextPrivate::anchorAt(const QPointF &mousePos)
bool QQuickTextPrivate::isLinkActivatedConnected()
{
Q_Q(QQuickText);
- IS_SIGNAL_CONNECTED(q, "linkActivated(QString)");
+ IS_SIGNAL_CONNECTED(q, QQuickText, linkActivated, (const QString &));
}
/*! \internal */
diff --git a/src/quick/items/qquickvisualdatamodel.cpp b/src/quick/items/qquickvisualdatamodel.cpp
index fe0dd00cbe..6f5934e4f1 100644
--- a/src/quick/items/qquickvisualdatamodel.cpp
+++ b/src/quick/items/qquickvisualdatamodel.cpp
@@ -2060,15 +2060,16 @@ void QQuickVisualDataGroupPrivate::setModel(QQuickVisualDataModel *m, Compositor
group = g;
}
-static bool isChangedConnected(QObject *obj)
+bool QQuickVisualDataGroupPrivate::isChangedConnected()
{
- IS_SIGNAL_CONNECTED(obj, "changed(QQmlV8Handle,QQmlV8Handle)");
+ Q_Q(QQuickVisualDataGroup);
+ IS_SIGNAL_CONNECTED(q, QQuickVisualDataGroup, changed, (const QQmlV8Handle &,const QQmlV8Handle &));
}
void QQuickVisualDataGroupPrivate::emitChanges(QV8Engine *engine)
{
Q_Q(QQuickVisualDataGroup);
- if (isChangedConnected(q) && !changeSet.isEmpty()) {
+ if (isChangedConnected() && !changeSet.isEmpty()) {
v8::HandleScope handleScope;
v8::Context::Scope contextScope(engine->context());
v8::Local<v8::Object> removed = engineData(engine)->array(engine, changeSet.removes());
diff --git a/src/quick/items/qquickvisualdatamodel_p_p.h b/src/quick/items/qquickvisualdatamodel_p_p.h
index 9a6c8c3738..b88c8a42da 100644
--- a/src/quick/items/qquickvisualdatamodel_p_p.h
+++ b/src/quick/items/qquickvisualdatamodel_p_p.h
@@ -210,6 +210,7 @@ public:
return static_cast<QQuickVisualDataGroupPrivate *>(QObjectPrivate::get(group)); }
void setModel(QQuickVisualDataModel *model, Compositor::Group group);
+ bool isChangedConnected();
void emitChanges(QV8Engine *engine);
void emitModelUpdated(bool reset);