Skip to content

Commit

Permalink
feat: open more perf files
Browse files Browse the repository at this point in the history
Currently `hotspot dir` only opens perf.data files. This patch extends
this to perf.data, perf.data.old and perf.data.perfparser files.
  • Loading branch information
lievenhey committed Sep 26, 2024
1 parent 36bedef commit aac8c8f
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,20 @@ void Q_DECL_UNUSED initRCCIconTheme()
}
#endif

namespace {
QStringList findPerfDataFiles(const QDir& directory = QDir::current())
{
QStringList files;

for (const auto& filename : {QStringLiteral("perf.data"), QStringLiteral("perf.data.perfparser")}) {
if (directory.exists(filename)) {
files.push_back(directory.absoluteFilePath(filename));
}
}
return files;
}
}

std::unique_ptr<QCoreApplication> createApplication(int& argc, char* argv[])
{
const std::initializer_list<std::string_view> nonGUIOptions = {"--version", "-v", "--exportTo",
Expand Down Expand Up @@ -236,7 +250,12 @@ int main(int argc, char** argv)
if (!files.isEmpty()) {
auto file = files.constFirst();
if (QFileInfo(file).isDir()) {
file.append(QLatin1String("/perf.data"));
// search for common perf data files in dir and open the first one found
// if none is found, hotspot will complain, that `file` is not a file
const auto perfDataFiles = findPerfDataFiles(QDir(file));
if (!perfDataFiles.isEmpty()) {
file = perfDataFiles.first();
}
}

if (parser.isSet(exportTo)) {
Expand Down Expand Up @@ -267,9 +286,12 @@ int main(int argc, char** argv)
} else {
// open perf.data in current CWD, if it exists
// this brings hotspot closer to the behavior of "perf report"
const auto perfDataFile = QStringLiteral("perf.data");
if (QFile::exists(perfDataFile) && window) {
window->openFile(perfDataFile);
const auto perfDataFiles = findPerfDataFiles();
for (const auto& perfDataFile : perfDataFiles) {
if (window) {
window->openFile(perfDataFile);
break;
}
}
}
if (window)
Expand Down

0 comments on commit aac8c8f

Please sign in to comment.