Index: src/core/connection.cpp =================================================================== --- src/core/connection.cpp +++ src/core/connection.cpp @@ -53,7 +53,7 @@ if (!suspended && incomingTasks.isEmpty()) { QMetaObject::invokeMethod(q, "dequeue", Qt::QueuedConnection); } - incomingTasks.enqueue(task); + incomingTasks.append(task); } void ConnectionPrivate::disconnected() @@ -172,7 +172,7 @@ Task task; task.cmd = cmd; task.data = data; - d->outgoingTasks.append(task); + d->outgoingTasks.append(std::move(task)); return true; } else { return sendnow(cmd, data); @@ -213,12 +213,14 @@ //kWarning() << this << "Task list is empty!"; return -1; } - const Task task = d->incomingTasks.dequeue(); + const Task& task = d->incomingTasks.constFirst(); //qDebug() << this << "Command " << task.cmd << " removed from the queue (size " // << task.data.size() << ")"; *_cmd = task.cmd; data = task.data; + d->incomingTasks.removeFirst(); + // if we didn't empty our reading queue, emit again if (!d->suspended && !d->incomingTasks.isEmpty()) { QMetaObject::invokeMethod(this, "dequeue", Qt::QueuedConnection); Index: src/core/connection_p.h =================================================================== --- src/core/connection_p.h +++ src/core/connection_p.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include "connectionbackend_p.h" namespace KIO @@ -45,8 +45,8 @@ void disconnected(); void setBackend(ConnectionBackend *b); - QList outgoingTasks; - QQueue incomingTasks; + QVector outgoingTasks; + QVector incomingTasks; ConnectionBackend *backend; Connection *q; bool suspended;