Jose Fonseca | 9653f95 | 2015-05-19 16:32:43 +0100 | [diff] [blame] | 1 | #pragma once |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 2 | |
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 3 | #include "trace_api.hpp" |
Dan McCabe | c6f924e | 2012-06-01 13:40:05 -0700 | [diff] [blame] | 4 | #include "apitrace.h" |
Zack Rusin | 10fd477 | 2011-09-14 01:45:12 -0400 | [diff] [blame] | 5 | #include "apitracecall.h" |
| 6 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 7 | #include <QThread> |
José Fonseca | b6d7e16 | 2012-03-26 09:49:01 +0100 | [diff] [blame] | 8 | #include <QProcess> |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 9 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 10 | class ApiTraceState; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 11 | |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 12 | namespace trace { struct Profile; } |
| 13 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 14 | class Retracer : public QThread |
| 15 | { |
| 16 | Q_OBJECT |
| 17 | public: |
| 18 | Retracer(QObject *parent=0); |
| 19 | |
| 20 | QString fileName() const; |
| 21 | void setFileName(const QString &name); |
| 22 | |
Carl Worth | 7257dfc | 2012-08-09 08:21:42 -0700 | [diff] [blame] | 23 | QString remoteTarget() const; |
| 24 | void setRemoteTarget(const QString &host); |
| 25 | |
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 26 | void setAPI(trace::API api); |
| 27 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 28 | bool isBenchmarking() const; |
| 29 | void setBenchmarking(bool bench); |
| 30 | |
| 31 | bool isDoubleBuffered() const; |
| 32 | void setDoubleBuffered(bool db); |
| 33 | |
Peter Lohrmann | b34c675 | 2013-07-10 11:08:14 -0400 | [diff] [blame] | 34 | bool isSinglethread() const; |
| 35 | void setSinglethread(bool singlethread); |
| 36 | |
Corey Richardson | f300646 | 2014-01-26 17:15:42 -0500 | [diff] [blame] | 37 | bool isCoreProfile() const; |
| 38 | void setCoreProfile(bool coreprofile); |
| 39 | |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 40 | bool isProfilingGpu() const; |
| 41 | bool isProfilingCpu() const; |
| 42 | bool isProfilingPixels() const; |
BogDan Vatra | a9f9e64 | 2015-02-10 14:31:17 +0200 | [diff] [blame] | 43 | bool isProfilingMemory() const; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 44 | bool isProfiling() const; |
BogDan Vatra | a9f9e64 | 2015-02-10 14:31:17 +0200 | [diff] [blame] | 45 | void setProfiling(bool gpu, bool cpu, bool pixels, bool memory); |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 46 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 47 | void setCaptureAtCallNumber(qlonglong num); |
| 48 | qlonglong captureAtCallNumber() const; |
| 49 | |
| 50 | bool captureState() const; |
| 51 | void setCaptureState(bool enable); |
| 52 | |
Dan McCabe | 66dfdda | 2012-03-05 17:20:39 -0800 | [diff] [blame] | 53 | bool captureThumbnails() const; |
| 54 | void setCaptureThumbnails(bool enable); |
| 55 | |
Dan McCabe | 8893885 | 2012-06-01 13:40:04 -0700 | [diff] [blame] | 56 | void addThumbnailToCapture(qlonglong num); |
| 57 | void resetThumbnailsToCapture(); |
BogDan Vatra | a9f9e64 | 2015-02-10 14:31:17 +0200 | [diff] [blame] | 58 | QString thumbnailCallSet() const; |
Dan McCabe | 8893885 | 2012-06-01 13:40:04 -0700 | [diff] [blame] | 59 | |
BogDan Vatra | a9f9e64 | 2015-02-10 14:31:17 +0200 | [diff] [blame] | 60 | QStringList retraceArguments() const; |
Dan McCabe | b14bda2 | 2012-06-01 13:40:06 -0700 | [diff] [blame] | 61 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 62 | signals: |
| 63 | void finished(const QString &output); |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 64 | void foundState(ApiTraceState *state); |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 65 | void foundProfile(trace::Profile *profile); |
Dan McCabe | c6f924e | 2012-06-01 13:40:05 -0700 | [diff] [blame] | 66 | void foundThumbnails(const ImageHash &thumbnails); |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 67 | void error(const QString &msg); |
Zack Rusin | 10fd477 | 2011-09-14 01:45:12 -0400 | [diff] [blame] | 68 | void retraceErrors(const QList<ApiTraceError> &errors); |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 69 | |
| 70 | protected: |
| 71 | virtual void run(); |
| 72 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 73 | private: |
| 74 | QString m_fileName; |
Carl Worth | 7257dfc | 2012-08-09 08:21:42 -0700 | [diff] [blame] | 75 | QString m_remoteTarget; |
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 76 | trace::API m_api; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 77 | bool m_benchmarking; |
| 78 | bool m_doubleBuffered; |
Peter Lohrmann | b34c675 | 2013-07-10 11:08:14 -0400 | [diff] [blame] | 79 | bool m_singlethread; |
Corey Richardson | f300646 | 2014-01-26 17:15:42 -0500 | [diff] [blame] | 80 | bool m_useCoreProfile; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 81 | bool m_captureState; |
Dan McCabe | 66dfdda | 2012-03-05 17:20:39 -0800 | [diff] [blame] | 82 | bool m_captureThumbnails; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 83 | qlonglong m_captureCall; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 84 | bool m_profileGpu; |
| 85 | bool m_profileCpu; |
| 86 | bool m_profilePixels; |
BogDan Vatra | a9f9e64 | 2015-02-10 14:31:17 +0200 | [diff] [blame] | 87 | bool m_profileMemory; |
Dan McCabe | 8893885 | 2012-06-01 13:40:04 -0700 | [diff] [blame] | 88 | |
| 89 | QProcessEnvironment m_processEnvironment; |
| 90 | |
| 91 | QList<qlonglong> m_thumbnailsToCapture; |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 92 | }; |