diff -r b72c6db6890b -r 5dc02b23752f src/dbus/qdbuspendingcall.cpp --- a/src/dbus/qdbuspendingcall.cpp Wed Jun 23 19:07:03 2010 +0300 +++ b/src/dbus/qdbuspendingcall.cpp Tue Jul 06 15:10:48 2010 +0300 @@ -48,6 +48,8 @@ #include "qcoreevent.h" #include +#ifndef QT_NO_DBUS + QT_BEGIN_NAMESPACE /*! @@ -208,8 +210,6 @@ void QDBusPendingCallPrivate::checkReceivedSignature() { - // MUST BE CALLED WITH A LOCKED MUTEX! - if (replyMessage.type() == QDBusMessage::InvalidMessage) return; // not yet finished - no message to // validate against @@ -232,8 +232,6 @@ void QDBusPendingCallPrivate::waitForFinished() { - QMutexLocker locker(&mutex); - if (replyMessage.type() != QDBusMessage::InvalidMessage) return; // already finished @@ -314,11 +312,7 @@ bool QDBusPendingCall::isFinished() const { - if (!d) - return true; // considered finished - - QMutexLocker locker(&d->mutex); - return d->replyMessage.type() != QDBusMessage::InvalidMessage; + return !d || (d->replyMessage.type() != QDBusMessage::InvalidMessage); } void QDBusPendingCall::waitForFinished() @@ -337,10 +331,7 @@ */ bool QDBusPendingCall::isValid() const { - if (!d) - return false; - QMutexLocker locker(&d->mutex); - return d->replyMessage.type() == QDBusMessage::ReplyMessage; + return d ? d->replyMessage.type() == QDBusMessage::ReplyMessage : false; } /*! @@ -354,10 +345,7 @@ */ bool QDBusPendingCall::isError() const { - if (!d) - return true; // considered finished and an error - QMutexLocker locker(&d->mutex); - return d->replyMessage.type() == QDBusMessage::ErrorMessage; + return d ? d->replyMessage.type() == QDBusMessage::ErrorMessage : true; } /*! @@ -370,10 +358,8 @@ */ QDBusError QDBusPendingCall::error() const { - if (d) { - QMutexLocker locker(&d->mutex); + if (d) return d->replyMessage; - } // not connected, return an error QDBusError err = QDBusError(QDBusError::Disconnected, @@ -394,10 +380,7 @@ */ QDBusMessage QDBusPendingCall::reply() const { - if (!d) - return QDBusMessage::createError(error()); - QMutexLocker locker(&d->mutex); - return d->replyMessage; + return d ? d->replyMessage : QDBusMessage::createError(error()); } #if 0 @@ -458,8 +441,9 @@ QDBusPendingCallPrivate *d = 0; if (msg.type() == QDBusMessage::ErrorMessage || msg.type() == QDBusMessage::ReplyMessage) { - d = new QDBusPendingCallPrivate(QDBusMessage(), 0); + d = new QDBusPendingCallPrivate; d->replyMessage = msg; + d->connection = 0; } return QDBusPendingCall(d); @@ -489,10 +473,9 @@ : QObject(*new QDBusPendingCallWatcherPrivate, parent), QDBusPendingCall(call) { if (d) { // QDBusPendingCall::d - QMutexLocker locker(&d->mutex); if (!d->watcherHelper) { d->watcherHelper = new QDBusPendingCallWatcherHelper; - if (d->replyMessage.type() != QDBusMessage::InvalidMessage) { + if (isFinished()) { // cause a signal emission anyways QMetaObject::invokeMethod(d->watcherHelper, "finished", Qt::QueuedConnection); } @@ -532,4 +515,6 @@ } QT_END_NAMESPACE +#endif // QT_NO_DBUS + #include "moc_qdbuspendingcall.cpp"