X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Ftraceprocess.cpp;h=8d57e525f0617b901a124369f1deb07da2c995a4;hb=ebe01ce9942e570f23b40793e97cf02b6f3616ee;hp=6bdd1c441cbd6558c65b9a8fbceae3222ad3f243;hpb=2744092b277b41ebc15d24b3293ecccbfa5d1237;p=apitrace diff --git a/gui/traceprocess.cpp b/gui/traceprocess.cpp index 6bdd1c4..8d57e52 100644 --- a/gui/traceprocess.cpp +++ b/gui/traceprocess.cpp @@ -5,29 +5,6 @@ #include #include -static QString -findPreloader() -{ - QString libPath; - QFileInfo fi; - -#ifdef APITRACE_BINARY_DIR - libPath = QString::fromLatin1(APITRACE_BINARY_DIR "/glxtrace.so"); - fi = QFileInfo(libPath); - if (fi.exists()) - return libPath; -#endif - -#ifdef APITRACE_WRAPPER_INSTALL_DIR - libPath = QString::fromLatin1(APITRACE_WRAPPER_INSTALL_DIR "/glxtrace.so"); - fi = QFileInfo(libPath); - if (fi.exists()) - return libPath; -#endif - - return QString(); -} - TraceProcess::TraceProcess(QObject *parent) : QObject(parent), m_canTrace(true) @@ -38,52 +15,34 @@ TraceProcess::TraceProcess(QObject *parent) this, SLOT(traceFinished())); connect(m_process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(traceError(QProcess::ProcessError))); - -#ifdef Q_OS_WIN - qWarning()<<"Windows tracing isn't supported right now!"; - m_canTrace = false; -#else - QString var = QLatin1String("LD_PRELOAD"); - QString libPath = findPreloader(); - QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); - - if (libPath.isEmpty()) { - m_canTrace = false; - } - - env.insert("LD_PRELOAD", libPath); - qputenv("LD_PRELOAD", env.value("LD_PRELOAD").toLatin1()); - - m_process->setProcessEnvironment(env); -#endif } TraceProcess::~TraceProcess() { } +void TraceProcess::setApi(const QString &str) +{ + m_api = str; +} + void TraceProcess::setExecutablePath(const QString &str) { m_execPath = str; QFileInfo fi(m_execPath); + QString baseName = fi.baseName(); - m_process->setWorkingDirectory(fi.absolutePath()); - - QString format = QString::fromLatin1("%1%2%3.trace"); + QString format = QString::fromLatin1("%1.trace"); m_tracePath = format - .arg(fi.absolutePath()) - .arg(QDir::separator()) - .arg(fi.baseName()); + .arg(baseName); int i = 1; while (QFile::exists(m_tracePath)) { - QString format = QString::fromLatin1("%1%2%3.%4.trace"); + format = QString::fromLatin1("%1.%2.trace"); m_tracePath = format - .arg(fi.absolutePath()) - .arg(QDir::separator()) - .arg(fi.baseName()) + .arg(baseName) .arg(i++); } } @@ -126,7 +85,18 @@ void TraceProcess::traceError(QProcess::ProcessError err) void TraceProcess::start() { - m_process->start(m_execPath, m_args); + QStringList arguments; + + arguments << QLatin1String("trace"); + arguments << QLatin1String("--api"); + arguments << m_api; + arguments << QLatin1String("--output"); + arguments << m_tracePath; + arguments << QLatin1String("--"); + arguments << m_execPath; + arguments << m_args; + + m_process->start(QLatin1String("apitrace"), arguments); } bool TraceProcess::canTrace() const