diff --git a/kio/kio/connection.cpp b/kio/kio/connection.cpp index b7c3b2e..14865fa 100644 --- a/kio/kio/connection.cpp +++ b/kio/kio/connection.cpp @@ -47,6 +47,7 @@ public: void dequeue(); void commandReceived(const Task &task); + void emitReadyRead(); void disconnected(); void setBackend(AbstractConnectionBackend *b); @@ -84,9 +85,15 @@ void ConnectionPrivate::dequeue() void ConnectionPrivate::commandReceived(const Task &task) { - //kDebug() << "Command " << task.cmd << " added to the queue"; + kDebug() << this << "Command " << task.cmd << " added to the queue"; incomingTasks.enqueue(task); - QMetaObject::invokeMethod(q, "readyRead", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, "emitReadyRead", Qt::QueuedConnection); +} + +void ConnectionPrivate::emitReadyRead() +{ + if (!incomingTasks.isEmpty()) + emit q->readyRead(); } void ConnectionPrivate::disconnected() @@ -507,11 +514,13 @@ bool Connection::waitForIncomingTask(int ms) int Connection::read( int* _cmd, QByteArray &data ) { // if it's still empty, then it's an error - if (d->incomingTasks.isEmpty()) + if (d->incomingTasks.isEmpty()) { + kWarning() << this << "Task list is empty!"; return -1; + } const Task task = d->incomingTasks.dequeue(); - //kDebug() << this << "Command " << task.cmd << " removed from the queue (size " - // << task.data.size() << ")" << endl; + kDebug() << this << "Command " << task.cmd << " removed from the queue (size " + << task.data.size() << ")" << endl; *_cmd = task.cmd; data = task.data; return data.size(); diff --git a/kio/kio/connection.h b/kio/kio/connection.h index 88d58c2..c510464 100644 --- a/kio/kio/connection.h +++ b/kio/kio/connection.h @@ -139,6 +139,7 @@ namespace KIO { private: Q_PRIVATE_SLOT(d, void dequeue()) Q_PRIVATE_SLOT(d, void commandReceived(Task)) + Q_PRIVATE_SLOT(d, void emitReadyRead()) Q_PRIVATE_SLOT(d, void disconnected()) friend class ConnectionPrivate; friend class ConnectionServer;