X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fprofiletablemodel.cpp;h=cbe2eea94189eaeb6125843c9b8d47838a101435;hb=b70a86af10057c5b7fcf79b674cfe5abbeaadebb;hp=a305709fa9c9c1cf9903894e574b8c9ea317654e;hpb=4c4896f8490aca7f32956e402ffdf413d04c36dd;p=apitrace diff --git a/gui/profiletablemodel.cpp b/gui/profiletablemodel.cpp index a305709..cbe2eea 100644 --- a/gui/profiletablemodel.cpp +++ b/gui/profiletablemodel.cpp @@ -1,4 +1,7 @@ #include "profiletablemodel.h" +#include "profiledialog.h" + +#include typedef trace::Profile::Call Call; typedef trace::Profile::Frame Frame; @@ -45,10 +48,35 @@ void ProfileTableModel::setProfile(trace::Profile* profile) } -void ProfileTableModel::setTimeSelection(int64_t start, int64_t end) +/** + * Set selection to nothing + */ +void ProfileTableModel::selectNone() +{ + m_timeMin = m_timeMax = 0; + updateModel(); + sort(m_sortColumn, m_sortOrder); +} + + +/** + * Set selection to program + */ +void ProfileTableModel::selectProgram(unsigned /*program*/) +{ + /* We have no program based selection for table */ + selectNone(); +} + + +/** + * Set selection to a period of time + */ +void ProfileTableModel::selectTime(int64_t start, int64_t end) { m_timeMin = start; m_timeMax = end; + updateModel(); sort(m_sortColumn, m_sortOrder); } @@ -138,6 +166,33 @@ const trace::Profile::Call *ProfileTableModel::getJumpCall(const QModelIndex & i } +/** + * Get the shader program associated with an item in the table + */ +unsigned ProfileTableModel::getProgram(const QModelIndex & index) const +{ + const ProfileTableRow& row = m_rowData[index.row()]; + return row.program; +} + + +/** + * Get the row index for a shader program + */ +int ProfileTableModel::getRowIndex(unsigned program) const +{ + for (int i = 0; i < m_rowData.size(); ++i) { + if (m_rowData[i].program == program) + return i; + } + + return -1; +} + + +/** + * Get the row data for a shader program + */ ProfileTableRow* ProfileTableModel::getRow(unsigned program) { for (QList::iterator itr = m_rowData.begin(); itr != m_rowData.end(); ++itr) { if (itr->program == program) @@ -178,19 +233,19 @@ QVariant ProfileTableModel::data(const QModelIndex &index, int role) const case COLUMN_PROGRAM: return row.program; case COLUMN_USAGES: - return row.uses; + return QLocale::system().toString(row.uses); case COLUMN_GPU_TIME: - return row.gpuTime; + return getTimeString(row.gpuTime); case COLUMN_CPU_TIME: - return row.cpuTime; + return getTimeString(row.cpuTime); case COLUMN_PIXELS_DRAWN: - return row.pixels; + return QLocale::system().toString((qlonglong)row.pixels); case COLUMN_GPU_AVERAGE: - return (row.uses <= 0) ? 0 : (row.gpuTime / row.uses); + return getTimeString((row.uses <= 0) ? 0 : (row.gpuTime / row.uses)); case COLUMN_CPU_AVERAGE: - return (row.uses <= 0) ? 0 : (row.cpuTime / row.uses); + return getTimeString((row.uses <= 0) ? 0 : (row.cpuTime / row.uses)); case COLUMN_PIXELS_AVERAGE: - return (row.uses <= 0) ? 0 : (row.pixels / row.uses); + return QLocale::system().toString((row.uses <= 0) ? 0 : (row.pixels / row.uses)); } } else if (role == Qt::TextAlignmentRole) { return Qt::AlignRight;