diff options
| author | 2014-04-21 23:15:17 -0400 | |
|---|---|---|
| committer | 2014-04-21 23:21:02 -0400 | |
| commit | 81f6062c85290dd2e63d0083e9f1c32a77d7783e (patch) | |
| tree | 668e5f9934daa57219a685384f1fc24cf850575b /src/citra_qt/main.cpp | |
| parent | Add a quick way to load Launcher.dat files (diff) | |
| download | yuzu-81f6062c85290dd2e63d0083e9f1c32a77d7783e.tar.gz yuzu-81f6062c85290dd2e63d0083e9f1c32a77d7783e.tar.xz yuzu-81f6062c85290dd2e63d0083e9f1c32a77d7783e.zip | |
Re-enable toggling window mode.
Diffstat (limited to 'src/citra_qt/main.cpp')
| -rw-r--r-- | src/citra_qt/main.cpp | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index bb8336c45..f20d33485 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp | |||
| @@ -32,9 +32,7 @@ GMainWindow::GMainWindow() | |||
| 32 | statusBar()->hide(); | 32 | statusBar()->hide(); |
| 33 | 33 | ||
| 34 | render_window = new GRenderWindow; | 34 | render_window = new GRenderWindow; |
| 35 | //render_window->setStyleSheet("background-color:black;"); | 35 | render_window->hide(); |
| 36 | ui.horizontalLayout->addWidget(render_window); | ||
| 37 | //render_window->hide(); | ||
| 38 | 36 | ||
| 39 | disasmWidget = new DisassemblerWidget(this, render_window->GetEmuThread()); | 37 | disasmWidget = new DisassemblerWidget(this, render_window->GetEmuThread()); |
| 40 | addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); | 38 | addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); |
| @@ -71,15 +69,15 @@ GMainWindow::GMainWindow() | |||
| 71 | restoreState(settings.value("state").toByteArray()); | 69 | restoreState(settings.value("state").toByteArray()); |
| 72 | render_window->restoreGeometry(settings.value("geometryRenderWindow").toByteArray()); | 70 | render_window->restoreGeometry(settings.value("geometryRenderWindow").toByteArray()); |
| 73 | 71 | ||
| 74 | //ui.action_Popout_Window_Mode->setChecked(settings.value("popupWindowMode", false).toBool()); | 72 | ui.action_Popout_Window_Mode->setChecked(settings.value("popoutWindowMode", true).toBool()); |
| 75 | //ToggleWindowMode(); | 73 | ToggleWindowMode(); |
| 76 | 74 | ||
| 77 | // Setup connections | 75 | // Setup connections |
| 78 | connect(ui.action_load_elf, SIGNAL(triggered()), this, SLOT(OnMenuLoadELF())); | 76 | connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile())); |
| 79 | connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame())); | 77 | connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame())); |
| 80 | connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame())); | 78 | connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame())); |
| 81 | connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame())); | 79 | connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame())); |
| 82 | //connect(ui.action_Single_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(SetupEmuWindowMode())); | 80 | connect(ui.action_Popout_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(ToggleWindowMode())); |
| 83 | connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog())); | 81 | connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog())); |
| 84 | 82 | ||
| 85 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues | 83 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues |
| @@ -88,15 +86,13 @@ GMainWindow::GMainWindow() | |||
| 88 | connect(&render_window->GetEmuThread(), SIGNAL(CPUStepped()), callstackWidget, SLOT(OnCPUStepped()), Qt::BlockingQueuedConnection); | 86 | connect(&render_window->GetEmuThread(), SIGNAL(CPUStepped()), callstackWidget, SLOT(OnCPUStepped()), Qt::BlockingQueuedConnection); |
| 89 | 87 | ||
| 90 | // Setup hotkeys | 88 | // Setup hotkeys |
| 91 | RegisterHotkey("Main Window", "Load Image", QKeySequence::Open); | 89 | RegisterHotkey("Main Window", "Load File", QKeySequence::Open); |
| 92 | RegisterHotkey("Main Window", "Start Emulation"); | 90 | RegisterHotkey("Main Window", "Start Emulation"); |
| 93 | LoadHotkeys(settings); | 91 | LoadHotkeys(settings); |
| 94 | 92 | ||
| 95 | connect(GetHotkey("Main Window", "Load Image", this), SIGNAL(activated()), this, SLOT(OnMenuLoadImage())); | 93 | connect(GetHotkey("Main Window", "Load File", this), SIGNAL(activated()), this, SLOT(OnMenuLoadFile())); |
| 96 | connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, SLOT(OnStartGame())); | 94 | connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, SLOT(OnStartGame())); |
| 97 | 95 | ||
| 98 | show(); | ||
| 99 | |||
| 100 | LogManager::Init(); | 96 | LogManager::Init(); |
| 101 | System::Init(render_window); | 97 | System::Init(render_window); |
| 102 | } | 98 | } |
| @@ -110,12 +106,9 @@ GMainWindow::~GMainWindow() | |||
| 110 | 106 | ||
| 111 | void GMainWindow::BootGame(const char* filename) | 107 | void GMainWindow::BootGame(const char* filename) |
| 112 | { | 108 | { |
| 113 | render_window->DoneCurrent(); // make sure EmuThread can access GL context | ||
| 114 | render_window->GetEmuThread().SetFilename(filename); | ||
| 115 | |||
| 116 | NOTICE_LOG(MASTER_LOG, "citra starting...\n"); | 109 | NOTICE_LOG(MASTER_LOG, "citra starting...\n"); |
| 117 | 110 | ||
| 118 | if (Core::Init(/*render_window*/)) { | 111 | if (Core::Init()) { |
| 119 | ERROR_LOG(MASTER_LOG, "core initialization failed, exiting..."); | 112 | ERROR_LOG(MASTER_LOG, "core initialization failed, exiting..."); |
| 120 | Core::Stop(); | 113 | Core::Stop(); |
| 121 | exit(1); | 114 | exit(1); |
| @@ -134,19 +127,22 @@ void GMainWindow::BootGame(const char* filename) | |||
| 134 | registersWidget->OnCPUStepped(); | 127 | registersWidget->OnCPUStepped(); |
| 135 | callstackWidget->OnCPUStepped(); | 128 | callstackWidget->OnCPUStepped(); |
| 136 | 129 | ||
| 130 | render_window->DoneCurrent(); // make sure EmuThread can access GL context | ||
| 131 | render_window->GetEmuThread().SetFilename(filename); | ||
| 137 | render_window->GetEmuThread().start(); | 132 | render_window->GetEmuThread().start(); |
| 133 | |||
| 134 | render_window->show(); | ||
| 138 | } | 135 | } |
| 139 | 136 | ||
| 140 | void GMainWindow::OnMenuLoadELF() | 137 | void GMainWindow::OnMenuLoadFile() |
| 141 | { | 138 | { |
| 142 | QString filename = QFileDialog::getOpenFileName(this, tr("Load ELF"), QString(), QString()); | 139 | QString filename = QFileDialog::getOpenFileName(this, tr("Load file"), QString(), tr("3DS homebrew (*.elf *.dat)")); |
| 143 | if (filename.size()) | 140 | if (filename.size()) |
| 144 | BootGame(filename.toLatin1().data()); | 141 | BootGame(filename.toLatin1().data()); |
| 145 | } | 142 | } |
| 146 | 143 | ||
| 147 | void GMainWindow::OnStartGame() | 144 | void GMainWindow::OnStartGame() |
| 148 | { | 145 | { |
| 149 | render_window->show(); | ||
| 150 | render_window->GetEmuThread().SetCpuRunning(true); | 146 | render_window->GetEmuThread().SetCpuRunning(true); |
| 151 | 147 | ||
| 152 | ui.action_Start->setEnabled(false); | 148 | ui.action_Start->setEnabled(false); |
| @@ -181,26 +177,22 @@ void GMainWindow::OnOpenHotkeysDialog() | |||
| 181 | 177 | ||
| 182 | void GMainWindow::ToggleWindowMode() | 178 | void GMainWindow::ToggleWindowMode() |
| 183 | { | 179 | { |
| 184 | //if (!render_window->GetEmuThread().isRunning()) | 180 | bool enable = ui.action_Popout_Window_Mode->isChecked(); |
| 185 | // return; | 181 | if (enable && render_window->parent() != NULL) |
| 186 | /* | ||
| 187 | bool enable = ui.action_Single_Window_Mode->isChecked(); | ||
| 188 | if (enable && render_window->parent() == NULL) // switch to single window mode | ||
| 189 | { | 182 | { |
| 190 | render_window->BackupGeometry(); | 183 | ui.horizontalLayout->removeWidget(render_window); |
| 191 | ui.horizontalLayout->addWidget(render_window); | 184 | render_window->setParent(NULL); |
| 192 | render_window->setVisible(true); | 185 | render_window->setVisible(true); |
| 193 | render_window->DoneCurrent(); | 186 | render_window->DoneCurrent(); |
| 187 | render_window->RestoreGeometry(); | ||
| 194 | } | 188 | } |
| 195 | else if (!enable && render_window->parent() != NULL) // switch to multiple windows mode | 189 | else if (!enable && render_window->parent() == NULL) |
| 196 | { | 190 | { |
| 197 | ui.horizontalLayout->removeWidget(render_window); | 191 | render_window->BackupGeometry(); |
| 198 | render_window->setParent(NULL); | 192 | ui.horizontalLayout->addWidget(render_window); |
| 199 | render_window->setVisible(true); | 193 | render_window->setVisible(true); |
| 200 | render_window->DoneCurrent(); | 194 | render_window->DoneCurrent(); |
| 201 | render_window->RestoreGeometry(); | ||
| 202 | } | 195 | } |
| 203 | */ | ||
| 204 | } | 196 | } |
| 205 | 197 | ||
| 206 | void GMainWindow::OnConfigure() | 198 | void GMainWindow::OnConfigure() |
| @@ -215,7 +207,7 @@ void GMainWindow::closeEvent(QCloseEvent* event) | |||
| 215 | settings.setValue("geometry", saveGeometry()); | 207 | settings.setValue("geometry", saveGeometry()); |
| 216 | settings.setValue("state", saveState()); | 208 | settings.setValue("state", saveState()); |
| 217 | settings.setValue("geometryRenderWindow", render_window->saveGeometry()); | 209 | settings.setValue("geometryRenderWindow", render_window->saveGeometry()); |
| 218 | //settings.setValue("singleWindowMode", ui.action_Single_Window_Mode->isChecked()); | 210 | settings.setValue("popoutWindowMode", ui.action_Popout_Window_Mode->isChecked()); |
| 219 | settings.setValue("firstStart", false); | 211 | settings.setValue("firstStart", false); |
| 220 | SaveHotkeys(settings); | 212 | SaveHotkeys(settings); |
| 221 | 213 | ||