diff options
author | Jan Dalheimer <jan@dalheimer.de> | 2014-02-15 14:19:35 +0100 |
---|---|---|
committer | Jan Dalheimer <jan@dalheimer.de> | 2014-02-15 14:19:35 +0100 |
commit | efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0 (patch) | |
tree | 4fcd3e9f210c92dbeac9f820f2ab1fd2d6dd9e58 /logic/profiler/JVisualVM.cpp | |
parent | 5cf599673db88b39100ffca78e10bbe5e10200d7 (diff) | |
download | MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar.gz MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar.lz MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar.xz MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.zip |
Profiler support. Currently JProfiler and JVisualVM are implemented.
Diffstat (limited to 'logic/profiler/JVisualVM.cpp')
-rw-r--r-- | logic/profiler/JVisualVM.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/logic/profiler/JVisualVM.cpp b/logic/profiler/JVisualVM.cpp new file mode 100644 index 00000000..31cc51b1 --- /dev/null +++ b/logic/profiler/JVisualVM.cpp @@ -0,0 +1,46 @@ +#include "JVisualVM.h" + +#include <QDir> +#include <QStandardPaths> + +#include "settingsobject.h" +#include "logic/MinecraftProcess.h" +#include "logic/OneSixInstance.h" + +JVisualVM::JVisualVM(OneSixInstance *instance, QObject *parent) : BaseProfiler(instance, parent) +{ +} + +void JVisualVM::beginProfilingImpl(MinecraftProcess *process) +{ + QProcess *profiler = new QProcess(this); + profiler->setArguments(QStringList() << "--jdkhome" + << m_instance->settings().get("JavaPath").toString() + << "--openpid" << QString::number(process->pid())); + profiler->setProgram("jvisualvm"); + connect(profiler, &QProcess::started, [this]() + { emit readyToLaunch(tr("JVisualVM started")); }); + connect(profiler, SIGNAL(finished(int)), profiler, SLOT(deleteLater())); + profiler->start(); +} + +void JVisualVMFactory::registerSettings(SettingsObject *settings) +{ + settings->registerSetting("JVisualVMPath"); +} + +BaseProfiler *JVisualVMFactory::createProfiler(OneSixInstance *instance, QObject *parent) +{ + return new JVisualVM(instance, parent); +} + +bool JVisualVMFactory::check(const QString &path, QString *error) +{ + QString resolved = QStandardPaths::findExecutable(path); + if (resolved.isEmpty() && !QDir::isAbsolutePath(path)) + { + *error = QObject::tr("Invalid path to JVisualVM"); + return false; + } + return true; +} |