Qt: Don't double-load display driver

This commit is contained in:
Vicki Pfau 2018-10-02 13:03:41 -07:00
parent 18fc2cbdb2
commit 5e7333e20f
1 changed files with 17 additions and 9 deletions

View File

@ -81,7 +81,6 @@ Window::Window(CoreManager* manager, ConfigController* config, int playerId, QWi
setAcceptDrops(true); setAcceptDrops(true);
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
updateTitle(); updateTitle();
reloadDisplayDriver();
m_logo.setDevicePixelRatio(m_screenWidget->devicePixelRatio()); m_logo.setDevicePixelRatio(m_screenWidget->devicePixelRatio());
m_logo = m_logo; // Free memory left over in old pixmap m_logo = m_logo; // Free memory left over in old pixmap
@ -238,8 +237,10 @@ void Window::reloadConfig() {
} }
m_display->resizeContext(); m_display->resizeContext();
} }
m_display->lockAspectRatio(opts->lockAspectRatio); if (m_display) {
m_display->filter(opts->resampleVideo); m_display->lockAspectRatio(opts->lockAspectRatio);
m_display->filter(opts->resampleVideo);
}
m_inputController.setScreensaverSuspendable(opts->suspendScreensaver); m_inputController.setScreensaverSuspendable(opts->suspendScreensaver);
} }
@ -600,9 +601,7 @@ void Window::showEvent(QShowEvent* event) {
enterFullScreen(); enterFullScreen();
m_fullscreenOnStart = false; m_fullscreenOnStart = false;
} }
if (m_display) { reloadDisplayDriver();
reloadDisplayDriver();
}
} }
void Window::closeEvent(QCloseEvent* event) { void Window::closeEvent(QCloseEvent* event) {
@ -702,6 +701,9 @@ void Window::gameStarted() {
if (m_savedScale > 0) { if (m_savedScale > 0) {
resizeFrame(size * m_savedScale); resizeFrame(size * m_savedScale);
} }
if (!m_display) {
reloadDisplayDriver();
}
attachWidget(m_display.get()); attachWidget(m_display.get());
m_display->setMinimumSize(size); m_display->setMinimumSize(size);
@ -1382,7 +1384,9 @@ void Window::setupMenu(QMenuBar* menubar) {
ConfigOption* lockAspectRatio = m_config->addOption("lockAspectRatio"); ConfigOption* lockAspectRatio = m_config->addOption("lockAspectRatio");
lockAspectRatio->addBoolean(tr("Lock aspect ratio"), avMenu); lockAspectRatio->addBoolean(tr("Lock aspect ratio"), avMenu);
lockAspectRatio->connect([this](const QVariant& value) { lockAspectRatio->connect([this](const QVariant& value) {
m_display->lockAspectRatio(value.toBool()); if (m_display) {
m_display->lockAspectRatio(value.toBool());
}
if (m_controller) { if (m_controller) {
m_screenWidget->setLockAspectRatio(value.toBool()); m_screenWidget->setLockAspectRatio(value.toBool());
} }
@ -1392,7 +1396,9 @@ void Window::setupMenu(QMenuBar* menubar) {
ConfigOption* lockIntegerScaling = m_config->addOption("lockIntegerScaling"); ConfigOption* lockIntegerScaling = m_config->addOption("lockIntegerScaling");
lockIntegerScaling->addBoolean(tr("Force integer scaling"), avMenu); lockIntegerScaling->addBoolean(tr("Force integer scaling"), avMenu);
lockIntegerScaling->connect([this](const QVariant& value) { lockIntegerScaling->connect([this](const QVariant& value) {
m_display->lockIntegerScaling(value.toBool()); if (m_display) {
m_display->lockIntegerScaling(value.toBool());
}
if (m_controller) { if (m_controller) {
m_screenWidget->setLockIntegerScaling(value.toBool()); m_screenWidget->setLockIntegerScaling(value.toBool());
} }
@ -1402,7 +1408,9 @@ void Window::setupMenu(QMenuBar* menubar) {
ConfigOption* resampleVideo = m_config->addOption("resampleVideo"); ConfigOption* resampleVideo = m_config->addOption("resampleVideo");
resampleVideo->addBoolean(tr("Bilinear filtering"), avMenu); resampleVideo->addBoolean(tr("Bilinear filtering"), avMenu);
resampleVideo->connect([this](const QVariant& value) { resampleVideo->connect([this](const QVariant& value) {
m_display->filter(value.toBool()); if (m_display) {
m_display->filter(value.toBool());
}
}, this); }, this);
m_config->updateOption("resampleVideo"); m_config->updateOption("resampleVideo");