2020-01-10 03:31:12 +00:00
|
|
|
#include "common/log.h"
|
2019-12-31 06:17:17 +00:00
|
|
|
#include "mainwindow.h"
|
|
|
|
#include "qthostinterface.h"
|
2020-08-29 12:19:28 +00:00
|
|
|
#include "qtutils.h"
|
2019-12-31 06:17:17 +00:00
|
|
|
#include <QtWidgets/QApplication>
|
2020-04-05 12:59:06 +00:00
|
|
|
#include <QtWidgets/QMessageBox>
|
2020-04-13 12:13:46 +00:00
|
|
|
#include <cstdlib>
|
2019-12-31 06:17:17 +00:00
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
int main(int argc, char* argv[])
|
|
|
|
{
|
2020-08-29 12:19:28 +00:00
|
|
|
// Register any standard types we need elsewhere
|
|
|
|
qRegisterMetaType<std::optional<bool>>();
|
|
|
|
|
2020-01-07 04:27:48 +00:00
|
|
|
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
2020-09-09 14:07:52 +00:00
|
|
|
QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
|
2020-01-07 04:27:48 +00:00
|
|
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
|
|
|
|
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
|
|
|
#endif
|
2020-01-03 07:51:42 +00:00
|
|
|
|
2019-12-31 06:17:17 +00:00
|
|
|
QApplication app(argc, argv);
|
|
|
|
|
2020-03-22 12:40:29 +00:00
|
|
|
#ifdef _WIN32
|
|
|
|
// Use Segoe UI on Windows rather than MS Shell Dlg 2, courtesy of Dolphin.
|
|
|
|
// Can be removed once switched to Qt 6.
|
|
|
|
QApplication::setFont(QApplication::font("QMenu"));
|
|
|
|
#endif
|
|
|
|
|
2019-12-31 06:17:17 +00:00
|
|
|
std::unique_ptr<QtHostInterface> host_interface = std::make_unique<QtHostInterface>();
|
2020-04-13 12:13:46 +00:00
|
|
|
std::unique_ptr<SystemBootParameters> boot_params;
|
2020-09-12 20:01:08 +00:00
|
|
|
if (!host_interface->ParseCommandLineParameters(argc, argv, &boot_params))
|
2020-04-13 12:13:46 +00:00
|
|
|
return EXIT_FAILURE;
|
|
|
|
|
2020-04-05 12:59:06 +00:00
|
|
|
if (!host_interface->Initialize())
|
|
|
|
{
|
|
|
|
host_interface->Shutdown();
|
|
|
|
QMessageBox::critical(nullptr, QObject::tr("DuckStation Error"),
|
|
|
|
QObject::tr("Failed to initialize host interface. Cannot continue."), QMessageBox::Ok);
|
2020-04-13 12:13:46 +00:00
|
|
|
return EXIT_FAILURE;
|
2020-04-05 12:59:06 +00:00
|
|
|
}
|
2019-12-31 06:17:17 +00:00
|
|
|
|
|
|
|
std::unique_ptr<MainWindow> window = std::make_unique<MainWindow>(host_interface.get());
|
|
|
|
window->show();
|
|
|
|
|
2020-04-13 12:13:46 +00:00
|
|
|
// if we're in batch mode, don't bother refreshing the game list as it won't be used
|
|
|
|
if (!host_interface->inBatchMode())
|
|
|
|
host_interface->refreshGameList();
|
|
|
|
|
|
|
|
if (boot_params)
|
|
|
|
{
|
2020-09-12 20:01:08 +00:00
|
|
|
host_interface->bootSystem(std::move(boot_params));
|
2020-04-13 12:13:46 +00:00
|
|
|
}
|
2020-08-06 12:08:22 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
window->startupUpdateCheck();
|
|
|
|
}
|
2020-03-12 05:32:34 +00:00
|
|
|
|
2020-04-05 12:59:06 +00:00
|
|
|
int result = app.exec();
|
|
|
|
|
|
|
|
window.reset();
|
|
|
|
host_interface->Shutdown();
|
|
|
|
return result;
|
2019-12-31 06:17:17 +00:00
|
|
|
}
|