src/dbus/qdbuspendingcall.cpp
changeset 30 5dc02b23752f
parent 29 b72c6db6890b
child 33 3e2da88830cd
--- 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 <private/qobject_p.h>
 
+#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"