Revert "Add QQmlBoundSignalNoParams"
authorMichael Brasser <michael.brasser@nokia.com>
Tue, 3 Apr 2012 02:11:55 +0000 (12:11 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 3 Apr 2012 07:22:17 +0000 (09:22 +0200)
This reverts commit ec7deb3d123bb44b5d57590615a60ed48b1d2860.

Other Qt modules may be relying on QObject::receivers() to
know when there is a QML signal handler for a signal, and
using QQmlNotifierEndpoint in QQmlBoundSignalNoParams breaks
this assumption.

Change-Id: I1b8085254697d909f85a88617eb4e3f258b88950
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
src/qml/debugger/qqmlprofilerservice_p.h
src/qml/qml/qqmlboundsignal.cpp
src/qml/qml/qqmlboundsignal_p.h
src/qml/qml/qqmlproperty.cpp
src/qml/qml/qqmlvme.cpp

index a988246..88a965e 100644 (file)
@@ -205,16 +205,16 @@ struct QQmlHandlingSignalProfiler {
     {
         enabled = QQmlProfilerService::instance
                 ? QQmlProfilerService::instance->profilingEnabled() : false;
-        if (enabled)
-            init(signal, expression);
-    }
-
-    QQmlHandlingSignalProfiler(QObject *object, int index, QQmlBoundSignalExpression *expression)
-    {
-        enabled = QQmlProfilerService::instance
-                ? QQmlProfilerService::instance->profilingEnabled() : false;
-        if (enabled)
-            init(object->metaObject()->method(index), expression);
+        if (enabled) {
+            QQmlProfilerService *service = QQmlProfilerService::instance;
+            service->startRange(QQmlProfilerService::HandlingSignal);
+            service->rangeData(QQmlProfilerService::HandlingSignal,
+                               QLatin1String(signal.signature()) + QLatin1String(": ")
+                               + expression->expression());
+            service->rangeLocation(QQmlProfilerService::HandlingSignal,
+                                   expression->sourceFile(), expression->lineNumber(),
+                                   expression->columnNumber());
+        }
     }
 
     ~QQmlHandlingSignalProfiler()
@@ -224,19 +224,6 @@ struct QQmlHandlingSignalProfiler {
     }
 
     bool enabled;
-
-private:
-    void init(const QMetaMethod &signal, QQmlBoundSignalExpression *expression)
-    {
-        QQmlProfilerService *service = QQmlProfilerService::instance;
-        service->startRange(QQmlProfilerService::HandlingSignal);
-        service->rangeData(QQmlProfilerService::HandlingSignal,
-                           QLatin1String(signal.signature()) + QLatin1String(": ")
-                           + expression->expression());
-        service->rangeLocation(QQmlProfilerService::HandlingSignal,
-                               expression->sourceFile(), expression->lineNumber(),
-                               expression->columnNumber());
-    }
 };
 
 struct QQmlObjectCreatingProfiler {
index 446bad8..af63cb1 100644 (file)
@@ -400,70 +400,6 @@ int QQmlBoundSignalParameters::metaCall(QMetaObject::Call c, int id, void **a)
     }
 }
 
-////////////////////////////////////////////////////////////////////////
-
-QQmlBoundSignalNoParams::QQmlBoundSignalNoParams(QObject *scope, const QMetaMethod &signal,
-                               QObject *owner)
-: m_expression(0), m_owner(owner), m_index(signal.methodIndex()), m_isEvaluating(false)
-{
-    callback = &subscriptionCallback;
-    QQmlNotifierEndpoint::connect(scope, m_index);
-}
-
-QQmlBoundSignalNoParams::~QQmlBoundSignalNoParams()
-{
-    delete m_expression;
-    m_expression = 0;
-}
-
-int QQmlBoundSignalNoParams::index() const
-{
-    return m_index;
-}
-
-/*!
-    Returns the signal expression.
-*/
-QQmlBoundSignalExpression *QQmlBoundSignalNoParams::expression() const
-{
-    return m_expression;
-}
-
-/*!
-    Sets the signal expression to \a e.  Returns the current signal expression,
-    or null if there is no signal expression.
-
-    The QQmlBoundSignalNoParams instance takes ownership of \a e.  The caller is
-    assumes ownership of the returned QQmlExpression.
-*/
-QQmlBoundSignalExpression *QQmlBoundSignalNoParams::setExpression(QQmlBoundSignalExpression *e)
-{
-    QQmlBoundSignalExpression *rv = m_expression;
-    m_expression = e;
-    if (m_expression) m_expression->setNotifyOnValueChanged(false);
-    return rv;
-}
-
-void QQmlBoundSignalNoParams::subscriptionCallback(QQmlNotifierEndpoint *e)
-{
-    QQmlBoundSignalNoParams *s = static_cast<QQmlBoundSignalNoParams*>(e);
-    if (!s->m_expression)
-        return;
-
-    if (QQmlDebugService::isDebuggingEnabled())
-        QV8DebugService::instance()->signalEmitted(QString::fromAscii(s->m_owner->metaObject()->method(s->m_index).signature()));
-
-    QQmlHandlingSignalProfiler prof(s->m_owner, s->m_index, s->m_expression);
-
-    s->m_isEvaluating = true;
-    if (s->m_expression && s->m_expression->engine()) {
-        s->m_expression->evaluate(); // evaluate signal expression.
-        if (s->m_expression && s->m_expression->hasError())
-            QQmlEnginePrivate::warning(s->m_expression->engine(), s->m_expression->error());
-    }
-    s->m_isEvaluating = false;
-}
-
 QT_END_NAMESPACE
 
 #include <qqmlboundsignal.moc>
index 22cc5a9..2c24a24 100644 (file)
@@ -57,7 +57,6 @@
 
 #include <private/qqmlabstractexpression_p.h>
 #include <private/qqmljavascriptexpression_p.h>
-#include <private/qqmlnotifier_p.h>
 #include <private/qobject_p.h>
 
 QT_BEGIN_NAMESPACE
@@ -148,31 +147,6 @@ private:
     QObject *m_owner;
 };
 
-class Q_QML_EXPORT QQmlBoundSignalNoParams : public QQmlAbstractBoundSignal,
-                                             public QQmlNotifierEndpoint
-{
-public:
-    QQmlBoundSignalNoParams(QObject *scope, const QMetaMethod &signal, QObject *owner);
-    virtual ~QQmlBoundSignalNoParams();
-
-    int index() const;
-
-    QQmlBoundSignalExpression *expression() const;
-    QQmlBoundSignalExpression *setExpression(QQmlBoundSignalExpression *);
-    QObject *object() { return m_owner; }
-
-    static void subscriptionCallback(QQmlNotifierEndpoint *e);
-
-    bool isEvaluating() const { return m_isEvaluating; }
-
-private:
-    QQmlBoundSignalExpression *m_expression;
-    QObject *m_owner;
-    int m_index;
-    bool m_isEvaluating;
-};
-
-
 QT_END_NAMESPACE
 
 #endif // QQMLBOUNDSIGNAL_P_H
index 1b01a7d..14f199c 100644 (file)
@@ -970,11 +970,7 @@ QQmlPropertyPrivate::setSignalExpression(const QQmlProperty &that,
         return signalHandler->setExpression(expr);
 
     if (expr) {
-        QQmlAbstractBoundSignal *signal = 0;
-        if (that.method().parameterTypes().count())
-            signal = new QQmlBoundSignal(that.d->object, that.method(), that.d->object);
-        else
-            signal = new QQmlBoundSignalNoParams(that.d->object, that.method(), that.d->object);
+        QQmlBoundSignal *signal = new QQmlBoundSignal(that.d->object, that.method(), that.d->object);
         QQmlBoundSignalExpression *oldExpr = signal->setExpression(expr);
         signal->addToObject();
         return oldExpr;
index 170a628..259f618 100644 (file)
@@ -711,11 +711,7 @@ QObject *QQmlVME::run(QList<QQmlError> *errors,
 
             QMetaMethod signal = target->metaObject()->method(instr.signalIndex);
 
-            QQmlAbstractBoundSignal *bs = 0;
-            if (signal.parameterTypes().count())
-                bs = new QQmlBoundSignal(target, signal, target);
-            else
-                bs = new QQmlBoundSignalNoParams(target, signal, target);
+            QQmlBoundSignal *bs = new QQmlBoundSignal(target, signal, target);
             QQmlBoundSignalExpression *expr =
                 new QQmlBoundSignalExpression(CTXT, context, DATAS.at(instr.value), true, COMP->name, instr.line, instr.column);
             bs->setExpression(expr);