X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fretracer.cpp;h=b42446bdd6af2ca064f3b522466dc3b778105cc2;hb=beda4440ab82ed4e8f7568fd5a19d8d595b748a3;hp=2928ed63f321f31e34667e2448e1b8f765f2fdbf;hpb=9db16b3989481f8d6dfc8932d760fcc16217ecbd;p=apitrace diff --git a/gui/retracer.cpp b/gui/retracer.cpp index 2928ed6..b42446b 100644 --- a/gui/retracer.cpp +++ b/gui/retracer.cpp @@ -130,6 +130,7 @@ Retracer::Retracer(QObject *parent) : QThread(parent), m_benchmarking(false), m_doubleBuffered(true), + m_singlethread(false), m_captureState(false), m_captureCall(0), m_profileGpu(false), @@ -149,6 +150,16 @@ void Retracer::setFileName(const QString &name) m_fileName = name; } +QString Retracer::remoteTarget() const +{ + return m_remoteTarget; +} + +void Retracer::setRemoteTarget(const QString &host) +{ + m_remoteTarget = host; +} + void Retracer::setAPI(trace::API api) { m_api = api; @@ -174,6 +185,16 @@ void Retracer::setDoubleBuffered(bool db) m_doubleBuffered = db; } +bool Retracer::isSinglethread() const +{ + return m_singlethread; +} + +void Retracer::setSinglethread(bool singlethread) +{ + m_singlethread = singlethread; +} + bool Retracer::isProfilingGpu() const { return m_profileGpu; @@ -271,6 +292,10 @@ void Retracer::run() return; } + if (m_singlethread) { + arguments << QLatin1String("--singlethread"); + } + if (m_captureState) { arguments << QLatin1String("-D"); arguments << QString::number(m_captureCall); @@ -303,6 +328,16 @@ void Retracer::run() arguments << m_fileName; + /* + * Support remote execution on a separate target. + */ + + if (m_remoteTarget.length() != 0) { + arguments.prepend(prog); + arguments.prepend(m_remoteTarget); + prog = QLatin1String("ssh"); + } + /* * Start the process. */ @@ -360,9 +395,7 @@ void Retracer::run() */ while (!io.atEnd()) { - unsigned channels = 0; - unsigned width = 0; - unsigned height = 0; + image::PNMInfo info; char header[512]; qint64 headerSize = 0; @@ -379,14 +412,19 @@ void Retracer::run() headerSize += headerRead; } - const char *headerEnd = image::readPNMHeader(header, headerSize, &channels, &width, &height); + const char *headerEnd = image::readPNMHeader(header, headerSize, info); // if invalid PNM header was encountered, ... - if (header == headerEnd) { + if (headerEnd == NULL || + info.channelType != image::TYPE_UNORM8) { qDebug() << "error: invalid snapshot stream encountered"; break; } + unsigned channels = info.channels; + unsigned width = info.width; + unsigned height = info.height; + // qDebug() << "channels: " << channels << ", width: " << width << ", height: " << height"; QImage snapshot = QImage(width, height, channels == 1 ? QImage::Format_Mono : QImage::Format_RGB888); @@ -472,7 +510,6 @@ void Retracer::run() if (m_captureState) { ApiTraceState *state = new ApiTraceState(parsedJson); emit foundState(state); - msg = QLatin1String("State fetched."); } if (m_captureThumbnails && !thumbnails.isEmpty()) {