rendered paste bodydiff --git a/mythtv/programs/mythbackend/filetransfer.cpp b/mythtv/programs/mythbackend/filetransfer.cpp
index 0e2de25..22357c1 100644
--- a/mythtv/programs/mythbackend/filetransfer.cpp
+++ b/mythtv/programs/mythbackend/filetransfer.cpp
@@ -6,8 +6,14 @@
#include "RingBuffer.h"
#include "util.h"
#include "mythsocket.h"
+#include "mythverbose.h"
#include "programinfo.h"
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <assert.h>
+
+
FileTransfer::FileTransfer(QString &filename, MythSocket *remote,
bool usereadahead, int timeout_ms) :
readthreadlive(true), readsLocked(false),
@@ -121,29 +127,40 @@ int FileTransfer::RequestBlock(int size)
if (!readthreadlive || !rbuffer)
return -1;
+ MythTimer sr_timer;
+ sr_timer.start();
+
+ pid_t tid;
+ tid = syscall(SYS_gettid);
+ VERBOSE(VB_IMPORTANT, QString("Request thread tid = %1").arg(tid));
int tot = 0;
int ret = 0;
- QMutexLocker locker(&lock);
- while (readsLocked)
- readsUnlockedCond.wait(&lock, 100 /*ms*/);
+// QMutexLocker locker(&lock);
+// while (readsLocked)
+// readsUnlockedCond.wait(&lock, 100 /*ms*/);
- requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
+ //requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
char *buf = &requestBuffer[0];
- while (tot < size && !rbuffer->GetStopReads() && readthreadlive)
+ //while (tot < size && !rbuffer->GetStopReads() && readthreadlive)
+ while (tot < size)
{
int request = size - tot;
+ VERBOSE(VB_IMPORTANT, QString("rbuffer->Read() -- end"));
ret = rbuffer->Read(buf, request);
+ VERBOSE(VB_IMPORTANT, QString("rbuffer->Read() -- end"));
if (rbuffer->GetStopReads() || ret <= 0)
break;
+ VERBOSE(VB_IMPORTANT, QString("sock->writeData() -- begin"));
if (!sock->writeData(buf, (uint)ret))
{
tot = -1;
break;
}
+ VERBOSE(VB_IMPORTANT, QString("sock->writeData() -- end"));
tot += ret;
if (ret < request)
@@ -153,6 +170,11 @@ int FileTransfer::RequestBlock(int size)
if (pginfo)
pginfo->UpdateInUseMark();
+ int sr_elapsed = sr_timer.elapsed();
+
+ if (sr_elapsed > 150) {
+ VERBOSE(VB_IMPORTANT, QString("WARNING took %1 ms to process request_block").arg(sr_elapsed));
+ }
return (ret < 0) ? -1 : tot;
}
@@ -166,7 +188,7 @@ int FileTransfer::WriteBlock(int size)
QMutexLocker locker(&lock);
- requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
+ //requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
char *buf = &requestBuffer[0];
while (tot < size)
{