Fix issues with intel drivers. Forced java re-detection on Windows.
This commit is contained in:
parent
c31dbf13cb
commit
f0d850e1ee
@ -484,6 +484,7 @@ void MultiMC::initGlobalSettings()
|
||||
// Java Settings
|
||||
m_settings->registerSetting("JavaPath", "");
|
||||
m_settings->registerSetting("LastHostname", "");
|
||||
m_settings->registerSetting("JavaDetectionHack", "");
|
||||
m_settings->registerSetting("JvmArgs", "");
|
||||
|
||||
// Custom Commands
|
||||
|
@ -110,7 +110,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
|
||||
MultiMCPlatform::fixWM_CLASS(this);
|
||||
ui->setupUi(this);
|
||||
|
||||
QString winTitle = QString("MultiMC 5 - Version %1").arg(BuildConfig.printableVersionString());
|
||||
QString winTitle =
|
||||
QString("MultiMC 5 - Version %1").arg(BuildConfig.printableVersionString());
|
||||
if (!BuildConfig.BUILD_PLATFORM.isEmpty())
|
||||
winTitle += " on " + BuildConfig.BUILD_PLATFORM;
|
||||
setWindowTitle(winTitle);
|
||||
@ -339,7 +340,6 @@ void MainWindow::skinJobFinished()
|
||||
skin_download_job.reset();
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::showInstanceContextMenu(const QPoint &pos)
|
||||
{
|
||||
QList<QAction *> actions;
|
||||
@ -361,9 +361,10 @@ void MainWindow::showInstanceContextMenu(const QPoint &pos)
|
||||
QAction *actionCopyInstance = new QAction(tr("Copy instance"), this);
|
||||
actionCopyInstance->setToolTip(ui->actionCopyInstance->toolTip());
|
||||
|
||||
|
||||
connect(actionRename, SIGNAL(triggered(bool)), SLOT(on_actionRenameInstance_triggered()));
|
||||
connect(actionCopyInstance, SIGNAL(triggered(bool)), SLOT(on_actionCopyInstance_triggered()));
|
||||
connect(actionRename, SIGNAL(triggered(bool)),
|
||||
SLOT(on_actionRenameInstance_triggered()));
|
||||
connect(actionCopyInstance, SIGNAL(triggered(bool)),
|
||||
SLOT(on_actionCopyInstance_triggered()));
|
||||
|
||||
actions.replace(1, actionRename);
|
||||
actions.prepend(actionSep);
|
||||
@ -378,7 +379,8 @@ void MainWindow::showInstanceContextMenu(const QPoint &pos)
|
||||
QAction *actionCreateInstance = new QAction(tr("Create instance"), this);
|
||||
actionCreateInstance->setToolTip(ui->actionAddInstance->toolTip());
|
||||
|
||||
connect(actionCreateInstance, SIGNAL(triggered(bool)), SLOT(on_actionAddInstance_triggered()));
|
||||
connect(actionCreateInstance, SIGNAL(triggered(bool)),
|
||||
SLOT(on_actionAddInstance_triggered()));
|
||||
|
||||
actions.prepend(actionSep);
|
||||
actions.prepend(actionVoid);
|
||||
@ -399,7 +401,8 @@ void MainWindow::updateToolsMenu()
|
||||
}
|
||||
QMenu *launchMenu = new QMenu(this);
|
||||
QAction *normalLaunch = launchMenu->addAction(tr("Launch"));
|
||||
connect(normalLaunch, &QAction::triggered, [this](){doLaunch();});
|
||||
connect(normalLaunch, &QAction::triggered, [this]()
|
||||
{ doLaunch(); });
|
||||
launchMenu->addSeparator()->setText(tr("Profilers"));
|
||||
for (auto profiler : MMC->profilers().values())
|
||||
{
|
||||
@ -408,11 +411,13 @@ void MainWindow::updateToolsMenu()
|
||||
if (!profiler->check(&error))
|
||||
{
|
||||
profilerAction->setDisabled(true);
|
||||
profilerAction->setToolTip(tr("Profiler not setup correctly. Go into settings, \"External Tools\"."));
|
||||
profilerAction->setToolTip(
|
||||
tr("Profiler not setup correctly. Go into settings, \"External Tools\"."));
|
||||
}
|
||||
else
|
||||
{
|
||||
connect(profilerAction, &QAction::triggered, [this, profiler](){doLaunch(true, profiler.get());});
|
||||
connect(profilerAction, &QAction::triggered, [this, profiler]()
|
||||
{ doLaunch(true, profiler.get()); });
|
||||
}
|
||||
}
|
||||
launchMenu->addSeparator()->setText(tr("Tools"));
|
||||
@ -423,14 +428,13 @@ void MainWindow::updateToolsMenu()
|
||||
if (!tool->check(&error))
|
||||
{
|
||||
toolAction->setDisabled(true);
|
||||
toolAction->setToolTip(tr("Tool not setup correctly. Go into settings, \"External Tools\"."));
|
||||
toolAction->setToolTip(
|
||||
tr("Tool not setup correctly. Go into settings, \"External Tools\"."));
|
||||
}
|
||||
else
|
||||
{
|
||||
connect(toolAction, &QAction::triggered, [this, tool]()
|
||||
{
|
||||
tool->createDetachedTool(m_selectedInstance, this)->run();
|
||||
});
|
||||
{ tool->createDetachedTool(m_selectedInstance, this)->run(); });
|
||||
}
|
||||
}
|
||||
ui->actionLaunchInstance->setMenu(launchMenu);
|
||||
@ -1224,7 +1228,8 @@ void MainWindow::doLaunch(bool online, BaseProfilerFactory *profiler)
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::updateInstance(InstancePtr instance, AuthSessionPtr session, BaseProfilerFactory *profiler)
|
||||
void MainWindow::updateInstance(InstancePtr instance, AuthSessionPtr session,
|
||||
BaseProfilerFactory *profiler)
|
||||
{
|
||||
auto updateTask = instance->doUpdate();
|
||||
if (!updateTask)
|
||||
@ -1239,7 +1244,8 @@ void MainWindow::updateInstance(InstancePtr instance, AuthSessionPtr session, Ba
|
||||
tDialog.exec(updateTask.get());
|
||||
}
|
||||
|
||||
void MainWindow::launchInstance(InstancePtr instance, AuthSessionPtr session, BaseProfilerFactory *profiler)
|
||||
void MainWindow::launchInstance(InstancePtr instance, AuthSessionPtr session,
|
||||
BaseProfilerFactory *profiler)
|
||||
{
|
||||
Q_ASSERT_X(instance != NULL, "launchInstance", "instance is NULL");
|
||||
Q_ASSERT_X(session.get() != nullptr, "launchInstance", "session is NULL");
|
||||
@ -1266,7 +1272,8 @@ void MainWindow::launchInstance(InstancePtr instance, AuthSessionPtr session, Ba
|
||||
QString error;
|
||||
if (!profiler->check(&error))
|
||||
{
|
||||
QMessageBox::critical(this, tr("Error"), tr("Couldn't start profiler: %1").arg(error));
|
||||
QMessageBox::critical(this, tr("Error"),
|
||||
tr("Couldn't start profiler: %1").arg(error));
|
||||
proc->abort();
|
||||
return;
|
||||
}
|
||||
@ -1276,9 +1283,11 @@ void MainWindow::launchInstance(InstancePtr instance, AuthSessionPtr session, Ba
|
||||
dialog.setMaximum(0);
|
||||
dialog.setValue(0);
|
||||
dialog.setLabelText(tr("Waiting for profiler..."));
|
||||
connect(&dialog, &QProgressDialog::canceled, profilerInstance, &BaseProfiler::abortProfiling);
|
||||
connect(&dialog, &QProgressDialog::canceled, profilerInstance,
|
||||
&BaseProfiler::abortProfiling);
|
||||
dialog.show();
|
||||
connect(profilerInstance, &BaseProfiler::readyToLaunch, [&dialog, this, proc](const QString &message)
|
||||
connect(profilerInstance, &BaseProfiler::readyToLaunch,
|
||||
[&dialog, this, proc](const QString & message)
|
||||
{
|
||||
dialog.accept();
|
||||
QMessageBox msg;
|
||||
@ -1291,7 +1300,8 @@ void MainWindow::launchInstance(InstancePtr instance, AuthSessionPtr session, Ba
|
||||
msg.exec();
|
||||
proc->launch();
|
||||
});
|
||||
connect(profilerInstance, &BaseProfiler::abortLaunch, [&dialog, this, proc](const QString &message)
|
||||
connect(profilerInstance, &BaseProfiler::abortLaunch,
|
||||
[&dialog, this, proc](const QString & message)
|
||||
{
|
||||
dialog.accept();
|
||||
QMessageBox msg;
|
||||
@ -1528,7 +1538,9 @@ void MainWindow::checkMigrateLegacyAssets()
|
||||
|
||||
void MainWindow::checkSetDefaultJava()
|
||||
{
|
||||
const QString javaHack = "IntelHack";
|
||||
bool askForJava = false;
|
||||
do
|
||||
{
|
||||
QString currentHostName = QHostInfo::localHostName();
|
||||
QString oldHostName = MMC->settings()->get("LastHostname").toString();
|
||||
@ -1536,16 +1548,30 @@ void MainWindow::checkSetDefaultJava()
|
||||
{
|
||||
MMC->settings()->set("LastHostname", currentHostName);
|
||||
askForJava = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
QString currentJavaPath = MMC->settings()->get("JavaPath").toString();
|
||||
if (currentJavaPath.isEmpty())
|
||||
{
|
||||
askForJava = true;
|
||||
break;
|
||||
}
|
||||
#if defined Q_OS_WIN32
|
||||
QString currentHack = MMC->settings()->get("JavaDetectionHack").toString();
|
||||
if (currentHack != javaHack)
|
||||
{
|
||||
CustomMessageBox::selectable(
|
||||
this, tr("Java detection forced"),
|
||||
tr("Because of graphics performance issues caused by Intel drivers on Windows, "
|
||||
"MultiMC java detection was forced. Please select a Minecraft version. If "
|
||||
"you have custom java versions set for your instances, make sure you use "
|
||||
"the 'javaw.exe' executable."),
|
||||
QMessageBox::Warning)->exec();
|
||||
askForJava = true;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
} while (0);
|
||||
|
||||
if (askForJava)
|
||||
{
|
||||
@ -1573,7 +1599,10 @@ void MainWindow::checkSetDefaultJava()
|
||||
java = ju.GetDefaultJava();
|
||||
}
|
||||
if (java)
|
||||
{
|
||||
MMC->settings()->set("JavaPath", java->path);
|
||||
MMC->settings()->set("JavaDetectionHack", javaHack);
|
||||
}
|
||||
else
|
||||
MMC->settings()->set("JavaPath", QString("java"));
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ QList<JavaVersionPtr> JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString
|
||||
javaVersion->id = subKeyName;
|
||||
javaVersion->arch = archType;
|
||||
javaVersion->path =
|
||||
QDir(PathCombine(value, "bin")).absoluteFilePath("java.exe");
|
||||
QDir(PathCombine(value, "bin")).absoluteFilePath("javaw.exe");
|
||||
javas.append(javaVersion);
|
||||
}
|
||||
|
||||
@ -154,12 +154,12 @@ QList<QString> JavaUtils::FindJavaPaths()
|
||||
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\Java Development Kit");
|
||||
|
||||
java_candidates.append(JRE64s);
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre7/bin/java.exe"));
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre6/bin/java.exe"));
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre7/bin/javaw.exe"));
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre6/bin/javaw.exe"));
|
||||
java_candidates.append(JDK64s);
|
||||
java_candidates.append(JRE32s);
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre7/bin/java.exe"));
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre6/bin/java.exe"));
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre7/bin/javaw.exe"));
|
||||
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre6/bin/javaw.exe"));
|
||||
java_candidates.append(JDK32s);
|
||||
java_candidates.append(MakeJavaPtr(this->GetDefaultJava()->path));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user