From cd42f8b3a6d60cd1046d0da8d93ae6c2807642cb Mon Sep 17 00:00:00 2001 From: iota97 Date: Sat, 10 Oct 2020 15:22:59 +0200 Subject: [PATCH 1/2] Make --windowed available on all platform and make sure to trigger resize --- UI/NativeApp.cpp | 8 +++++++- Windows/main.cpp | 3 --- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index ef7547d411..d9ac927aef 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -595,8 +595,14 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch #endif if (!strncmp(argv[i], "--pause-menu-exit", strlen("--pause-menu-exit"))) g_Config.bPauseMenuExitsEmulator = true; - if (!strcmp(argv[i], "--fullscreen")) + if (!strcmp(argv[i], "--fullscreen")) { g_Config.bFullScreen = true; + System_SendMessage("toggle_fullscreen", "1"); + } + if (!strcmp(argv[i], "--windowed")) { + g_Config.bFullScreen = false; + System_SendMessage("toggle_fullscreen", "0"); + } if (!strcmp(argv[i], "--touchscreentest")) gotoTouchScreenTest = true; if (!strcmp(argv[i], "--gamesettings")) diff --git a/Windows/main.cpp b/Windows/main.cpp index 3abdd7dfb0..3ffe67259e 100644 --- a/Windows/main.cpp +++ b/Windows/main.cpp @@ -564,9 +564,6 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin break; } - if (wideArgs[i] == L"--windowed") - g_Config.bFullScreen = false; - if (wideArgs[i].find(gpuBackend) != std::wstring::npos && wideArgs[i].size() > gpuBackend.size()) { const std::wstring restOfOption = wideArgs[i].substr(gpuBackend.size()); From 4c0908ef44176cf0a48590948142efaa6573d210 Mon Sep 17 00:00:00 2001 From: iota97 Date: Sat, 10 Oct 2020 16:26:07 +0200 Subject: [PATCH 2/2] Make Qt apply fullscreen change from UI as well --- Qt/mainwindow.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Qt/mainwindow.cpp b/Qt/mainwindow.cpp index c2301004d3..a38e7f1fa3 100644 --- a/Qt/mainwindow.cpp +++ b/Qt/mainwindow.cpp @@ -24,13 +24,6 @@ MainWindow::MainWindow(QWidget *parent, bool fullscreen) : nextState(CORE_POWERDOWN), lastUIState(UISTATE_MENU) { - QDesktopWidget *desktop = QApplication::desktop(); - int screenNum = QProcessEnvironment::systemEnvironment().value("SDL_VIDEO_FULLSCREEN_HEAD", "0").toInt(); - - // Move window to the center of selected screen - QRect rect = desktop->screenGeometry(screenNum); - move((rect.width() - frameGeometry().width()) / 4, (rect.height() - frameGeometry().height()) / 4); - setWindowIcon(QIcon(qApp->applicationDirPath() + "/assets/icon_regular_72.png")); SetGameTitle(""); @@ -64,6 +57,9 @@ void MainWindow::newFrame() updateMenus(); } + if (g_Config.bFullScreen != isFullScreen()) + SetFullScreen(g_Config.bFullScreen); + std::unique_lock lock(msgMutex_); while (!msgQueue_.empty()) { MainWindowMsg msg = msgQueue_.front(); @@ -112,9 +108,6 @@ void MainWindow::updateMenus() void MainWindow::bootDone() { - if (g_Config.bFullScreen != isFullScreen()) - SetFullScreen(g_Config.bFullScreen); - if (nextState == CORE_RUNNING) runAct(); updateMenus(); @@ -389,6 +382,13 @@ void MainWindow::SetFullScreen(bool fullscreen) { if (GetUIState() == UISTATE_INGAME && QApplication::overrideCursor()) QApplication::restoreOverrideCursor(); + + QDesktopWidget *desktop = QApplication::desktop(); + int screenNum = QProcessEnvironment::systemEnvironment().value("SDL_VIDEO_FULLSCREEN_HEAD", "0").toInt(); + + // Move window to the center of selected screen + QRect rect = desktop->screenGeometry(screenNum); + move((rect.width() - frameGeometry().width()) / 4, (rect.height() - frameGeometry().height()) / 4); } }