From b39c1a32b513b413fcfe055131476880f4b5a20e Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Sun, 22 Apr 2012 14:23:53 +0200 Subject: Port QtConcurrent to QMetaMethod-based connectNotify() The const char *-based API is deprecated and will be removed in Qt5. Change-Id: Ica5b2c5020adf972db5005be8c062ddcdae8c0b4 Reviewed-by: Olivier Goffart Reviewed-by: Thiago Macieira --- src/concurrent/qfuturewatcher.cpp | 14 +++++++++----- src/concurrent/qfuturewatcher.h | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/concurrent/qfuturewatcher.cpp b/src/concurrent/qfuturewatcher.cpp index d3a1122a07..9153fe5d40 100644 --- a/src/concurrent/qfuturewatcher.cpp +++ b/src/concurrent/qfuturewatcher.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include "qfuturewatcher_p.h" @@ -354,13 +355,15 @@ void QFutureWatcherBase::setPendingResultsLimit(int limit) d->maximumPendingResultsReady = limit; } -void QFutureWatcherBase::connectNotify(const char * signal) +void QFutureWatcherBase::connectNotify(const QMetaMethod &signal) { Q_D(QFutureWatcherBase); - if (qstrcmp(signal, SIGNAL(resultReadyAt(int))) == 0) + static const QMetaMethod resultReadyAtSignal = QMetaMethod::fromSignal(&QFutureWatcherBase::resultReadyAt); + if (signal == resultReadyAtSignal) d->resultAtConnected.ref(); #ifndef QT_NO_DEBUG - if (qstrcmp(signal, SIGNAL(finished())) == 0) { + static const QMetaMethod finishedSignal = QMetaMethod::fromSignal(&QFutureWatcherBase::finished); + if (signal == finishedSignal) { if (futureInterface().isRunning()) { //connections should be established before calling stFuture to avoid race. // (The future could finish before the connection is made.) @@ -370,10 +373,11 @@ void QFutureWatcherBase::connectNotify(const char * signal) #endif } -void QFutureWatcherBase::disconnectNotify(const char * signal) +void QFutureWatcherBase::disconnectNotify(const QMetaMethod &signal) { Q_D(QFutureWatcherBase); - if (qstrcmp(signal, SIGNAL(resultReadyAt(int))) == 0) + static const QMetaMethod resultReadyAtSignal = QMetaMethod::fromSignal(&QFutureWatcherBase::resultReadyAt); + if (signal == resultReadyAtSignal) d->resultAtConnected.deref(); } diff --git a/src/concurrent/qfuturewatcher.h b/src/concurrent/qfuturewatcher.h index 439a25d844..c05f58e3de 100644 --- a/src/concurrent/qfuturewatcher.h +++ b/src/concurrent/qfuturewatcher.h @@ -102,8 +102,8 @@ public Q_SLOTS: void togglePaused(); protected: - void connectNotify (const char * signal); - void disconnectNotify (const char * signal); + void connectNotify (const QMetaMethod &signal); + void disconnectNotify (const QMetaMethod &signal); // called from setFuture() implemented in template sub-classes void connectOutputInterface(); -- cgit v1.2.3