From 07d3b18a5fc0b6431cafef57c9df22696e27b805 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 3 Apr 2012 12:11:55 +1000 Subject: Revert "Add QQmlBoundSignalNoParams" 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 --- src/qml/debugger/qqmlprofilerservice_p.h | 33 +++++----------- src/qml/qml/qqmlboundsignal.cpp | 64 -------------------------------- src/qml/qml/qqmlboundsignal_p.h | 26 ------------- src/qml/qml/qqmlproperty.cpp | 6 +-- src/qml/qml/qqmlvme.cpp | 6 +-- 5 files changed, 12 insertions(+), 123 deletions(-) (limited to 'src') diff --git a/src/qml/debugger/qqmlprofilerservice_p.h b/src/qml/debugger/qqmlprofilerservice_p.h index a9882463d4..88a965e6c1 100644 --- a/src/qml/debugger/qqmlprofilerservice_p.h +++ b/src/qml/debugger/qqmlprofilerservice_p.h @@ -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 { diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index 446bad855a..af63cb122d 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -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(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 diff --git a/src/qml/qml/qqmlboundsignal_p.h b/src/qml/qml/qqmlboundsignal_p.h index 22cc5a9f83..2c24a24cfc 100644 --- a/src/qml/qml/qqmlboundsignal_p.h +++ b/src/qml/qml/qqmlboundsignal_p.h @@ -57,7 +57,6 @@ #include #include -#include #include 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 diff --git a/src/qml/qml/qqmlproperty.cpp b/src/qml/qml/qqmlproperty.cpp index 1b01a7d7c1..14f199c734 100644 --- a/src/qml/qml/qqmlproperty.cpp +++ b/src/qml/qml/qqmlproperty.cpp @@ -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; diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp index 170a6285c4..259f6183cb 100644 --- a/src/qml/qml/qqmlvme.cpp +++ b/src/qml/qml/qqmlvme.cpp @@ -711,11 +711,7 @@ QObject *QQmlVME::run(QList *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); -- cgit v1.2.3