1 #include "apitracefilter.h"
3 #include "apitracecall.h"
4 #include "apitracemodel.h"
8 ApiTraceFilter::ApiTraceFilter(QObject *parent)
9 : QSortFilterProxyModel(),
10 m_filters(ExtensionsFilter | ResolutionsFilter |
11 ErrorsQueryFilter | ExtraStateFilter)
15 bool ApiTraceFilter::filterAcceptsRow(int sourceRow,
16 const QModelIndex &sourceParent) const
18 QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
19 QVariant varientData = sourceModel()->data(index0, ApiTraceModel::EventRole);
20 ApiTraceEvent *event = varientData.value<ApiTraceEvent*>();
25 //we don't filter frames
26 if (event->type() == ApiTraceEvent::Frame) {
30 ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
31 QString function = call->name();
33 if (!m_regexp.isEmpty() && m_regexp.isValid()) {
34 return function.contains(m_regexp);
37 if (m_filters & ResolutionsFilter) {
38 if (function.contains(QLatin1String("glXGetProcAddress")))
40 if (function.contains(QLatin1String("wglGetProcAddress")))
44 if (m_filters & ErrorsQueryFilter) {
45 if (function.contains(QLatin1String("glGetError")))
49 if (m_filters & ExtraStateFilter) {
50 if (function.contains(QLatin1String("glXGetCurrentDisplay")))
52 if (function.contains(QLatin1String("wglDescribePixelFormat")))
56 if (m_filters & ExtensionsFilter) {
57 if (function.contains(QLatin1String("glXGetClientString")))
59 if (function.contains(QLatin1String("glXQueryExtensionsString")))
61 if (function.contains(QLatin1String("glGetString")))
65 if (m_filters & CustomFilter) {
66 return !function.contains(m_customRegexp);
74 void ApiTraceFilter::setFilterRegexp(const QRegExp ®exp)
76 if (regexp != m_regexp) {
82 ApiTraceFilter::FilterOptions ApiTraceFilter::filterOptions() const
87 void ApiTraceFilter::setFilterOptions(ApiTraceFilter::FilterOptions opts)
89 if (opts != m_filters) {
96 QModelIndex ApiTraceFilter::indexForCall(ApiTraceCall *call) const
98 ApiTraceModel *model = static_cast<ApiTraceModel *>(sourceModel());
99 QModelIndex index = model->indexForCall(call);
100 return mapFromSource(index);
103 QRegExp ApiTraceFilter::filterRegexp() const
108 void ApiTraceFilter::setCustomFilterRegexp(const QString &str)
110 m_customRegexp = QRegExp(str);
113 QString ApiTraceFilter::customFilterRegexp() const
115 return m_customRegexp.pattern();
118 #include "apitracefilter.moc"