summaryrefslogtreecommitdiffstats
path: root/src/declarative/debugger/qpacketprotocol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/debugger/qpacketprotocol.cpp')
-rw-r--r--src/declarative/debugger/qpacketprotocol.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/declarative/debugger/qpacketprotocol.cpp b/src/declarative/debugger/qpacketprotocol.cpp
index 9caaa79..f53d2a3 100644
--- a/src/declarative/debugger/qpacketprotocol.cpp
+++ b/src/declarative/debugger/qpacketprotocol.cpp
@@ -164,12 +164,16 @@ public Q_SLOTS:
void readyToRead()
{
+ bool gotPackets = false;
while (true) {
- // Need to get trailing data
+ // Get size header (if not in progress)
if (-1 == inProgressSize) {
// We need a size header of sizeof(qint32)
- if (sizeof(qint32) > (uint)dev->bytesAvailable())
- return;
+ if (sizeof(qint32) > (uint)dev->bytesAvailable()) {
+ if (gotPackets)
+ emit readyRead();
+ return; // no more data available
+ }
// Read size header
int read = dev->read((char *)&inProgressSize, sizeof(qint32));
@@ -200,9 +204,12 @@ public Q_SLOTS:
inProgress.clear();
waitingForPacket = false;
- emit readyRead();
- } else
- return;
+ gotPackets = true;
+ } else {
+ if (gotPackets)
+ emit readyRead();
+ return; // packet in progress is not yet complete
+ }
}
}
}