diff options
| author | 2015-04-16 18:35:09 -0400 | |
|---|---|---|
| committer | 2015-05-01 18:26:58 -0400 | |
| commit | 762c1a9ff5406afc4c6b1a3eb74dae2dc2fb0daf (patch) | |
| tree | 74ac7be2a6f1b3dfd09986b598844440af9e2f8f /src/citra_qt/main.cpp | |
| parent | Merge pull request #717 from linkmauve/useless-auto (diff) | |
| download | yuzu-762c1a9ff5406afc4c6b1a3eb74dae2dc2fb0daf.tar.gz yuzu-762c1a9ff5406afc4c6b1a3eb74dae2dc2fb0daf.tar.xz yuzu-762c1a9ff5406afc4c6b1a3eb74dae2dc2fb0daf.zip | |
Qt: Move EmuThread ownership from render window to main window.
Diffstat (limited to 'src/citra_qt/main.cpp')
| -rw-r--r-- | src/citra_qt/main.cpp | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index e5ca04124..0e57d9e18 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp | |||
| @@ -46,7 +46,7 @@ | |||
| 46 | 46 | ||
| 47 | #include "version.h" | 47 | #include "version.h" |
| 48 | 48 | ||
| 49 | GMainWindow::GMainWindow() | 49 | GMainWindow::GMainWindow() : emu_thread(nullptr) |
| 50 | { | 50 | { |
| 51 | Pica::g_debug_context = Pica::DebugContext::Construct(); | 51 | Pica::g_debug_context = Pica::DebugContext::Construct(); |
| 52 | 52 | ||
| @@ -55,14 +55,15 @@ GMainWindow::GMainWindow() | |||
| 55 | ui.setupUi(this); | 55 | ui.setupUi(this); |
| 56 | statusBar()->hide(); | 56 | statusBar()->hide(); |
| 57 | 57 | ||
| 58 | render_window = new GRenderWindow; | 58 | render_window = new GRenderWindow(this, *this); |
| 59 | render_window->hide(); | 59 | render_window->hide(); |
| 60 | emu_thread = new EmuThread(render_window); | ||
| 60 | 61 | ||
| 61 | profilerWidget = new ProfilerWidget(this); | 62 | profilerWidget = new ProfilerWidget(this); |
| 62 | addDockWidget(Qt::BottomDockWidgetArea, profilerWidget); | 63 | addDockWidget(Qt::BottomDockWidgetArea, profilerWidget); |
| 63 | profilerWidget->hide(); | 64 | profilerWidget->hide(); |
| 64 | 65 | ||
| 65 | disasmWidget = new DisassemblerWidget(this, render_window->GetEmuThread()); | 66 | disasmWidget = new DisassemblerWidget(this, *this); |
| 66 | addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); | 67 | addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); |
| 67 | disasmWidget->hide(); | 68 | disasmWidget->hide(); |
| 68 | 69 | ||
| @@ -139,13 +140,13 @@ GMainWindow::GMainWindow() | |||
| 139 | connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog())); | 140 | connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog())); |
| 140 | 141 | ||
| 141 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues | 142 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues |
| 142 | connect(&render_window->GetEmuThread(), SIGNAL(DebugModeEntered()), disasmWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); | 143 | connect(emu_thread, SIGNAL(DebugModeEntered()), disasmWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); |
| 143 | connect(&render_window->GetEmuThread(), SIGNAL(DebugModeEntered()), registersWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); | 144 | connect(emu_thread, SIGNAL(DebugModeEntered()), registersWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); |
| 144 | connect(&render_window->GetEmuThread(), SIGNAL(DebugModeEntered()), callstackWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); | 145 | connect(emu_thread, SIGNAL(DebugModeEntered()), callstackWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); |
| 145 | 146 | ||
| 146 | connect(&render_window->GetEmuThread(), SIGNAL(DebugModeLeft()), disasmWidget, SLOT(OnDebugModeLeft()), Qt::BlockingQueuedConnection); | 147 | connect(emu_thread, SIGNAL(DebugModeLeft()), disasmWidget, SLOT(OnDebugModeLeft()), Qt::BlockingQueuedConnection); |
| 147 | connect(&render_window->GetEmuThread(), SIGNAL(DebugModeLeft()), registersWidget, SLOT(OnDebugModeLeft()), Qt::BlockingQueuedConnection); | 148 | connect(emu_thread, SIGNAL(DebugModeLeft()), registersWidget, SLOT(OnDebugModeLeft()), Qt::BlockingQueuedConnection); |
| 148 | connect(&render_window->GetEmuThread(), SIGNAL(DebugModeLeft()), callstackWidget, SLOT(OnDebugModeLeft()), Qt::BlockingQueuedConnection); | 149 | connect(emu_thread, SIGNAL(DebugModeLeft()), callstackWidget, SLOT(OnDebugModeLeft()), Qt::BlockingQueuedConnection); |
| 149 | 150 | ||
| 150 | // Setup hotkeys | 151 | // Setup hotkeys |
| 151 | RegisterHotkey("Main Window", "Load File", QKeySequence::Open); | 152 | RegisterHotkey("Main Window", "Load File", QKeySequence::Open); |
| @@ -210,8 +211,8 @@ void GMainWindow::BootGame(std::string filename) | |||
| 210 | registersWidget->OnDebugModeEntered(); | 211 | registersWidget->OnDebugModeEntered(); |
| 211 | callstackWidget->OnDebugModeEntered(); | 212 | callstackWidget->OnDebugModeEntered(); |
| 212 | 213 | ||
| 213 | render_window->GetEmuThread().SetFilename(filename); | 214 | emu_thread->SetFilename(filename); |
| 214 | render_window->GetEmuThread().start(); | 215 | emu_thread->start(); |
| 215 | 216 | ||
| 216 | render_window->show(); | 217 | render_window->show(); |
| 217 | OnStartGame(); | 218 | OnStartGame(); |
| @@ -232,7 +233,7 @@ void GMainWindow::OnMenuLoadSymbolMap() { | |||
| 232 | 233 | ||
| 233 | void GMainWindow::OnStartGame() | 234 | void GMainWindow::OnStartGame() |
| 234 | { | 235 | { |
| 235 | render_window->GetEmuThread().SetCpuRunning(true); | 236 | emu_thread->SetCpuRunning(true); |
| 236 | 237 | ||
| 237 | ui.action_Start->setEnabled(false); | 238 | ui.action_Start->setEnabled(false); |
| 238 | ui.action_Pause->setEnabled(true); | 239 | ui.action_Pause->setEnabled(true); |
| @@ -241,7 +242,7 @@ void GMainWindow::OnStartGame() | |||
| 241 | 242 | ||
| 242 | void GMainWindow::OnPauseGame() | 243 | void GMainWindow::OnPauseGame() |
| 243 | { | 244 | { |
| 244 | render_window->GetEmuThread().SetCpuRunning(false); | 245 | emu_thread->SetCpuRunning(false); |
| 245 | 246 | ||
| 246 | ui.action_Start->setEnabled(true); | 247 | ui.action_Start->setEnabled(true); |
| 247 | ui.action_Pause->setEnabled(false); | 248 | ui.action_Pause->setEnabled(false); |
| @@ -250,7 +251,7 @@ void GMainWindow::OnPauseGame() | |||
| 250 | 251 | ||
| 251 | void GMainWindow::OnStopGame() | 252 | void GMainWindow::OnStopGame() |
| 252 | { | 253 | { |
| 253 | render_window->GetEmuThread().SetCpuRunning(false); | 254 | emu_thread->SetCpuRunning(false); |
| 254 | // TODO: Shutdown core | 255 | // TODO: Shutdown core |
| 255 | 256 | ||
| 256 | ui.action_Start->setEnabled(true); | 257 | ui.action_Start->setEnabled(true); |
| @@ -265,24 +266,22 @@ void GMainWindow::OnOpenHotkeysDialog() | |||
| 265 | } | 266 | } |
| 266 | 267 | ||
| 267 | 268 | ||
| 268 | void GMainWindow::ToggleWindowMode() | 269 | void GMainWindow::ToggleWindowMode() { |
| 269 | { | 270 | if (ui.action_Single_Window_Mode->isChecked()) { |
| 270 | bool enable = ui.action_Single_Window_Mode->isChecked(); | 271 | // Render in the main window... |
| 271 | if (!enable && render_window->parent() != nullptr) | ||
| 272 | { | ||
| 273 | ui.horizontalLayout->removeWidget(render_window); | ||
| 274 | render_window->setParent(nullptr); | ||
| 275 | render_window->setVisible(true); | ||
| 276 | render_window->RestoreGeometry(); | ||
| 277 | render_window->setFocusPolicy(Qt::NoFocus); | ||
| 278 | } | ||
| 279 | else if (enable && render_window->parent() == nullptr) | ||
| 280 | { | ||
| 281 | render_window->BackupGeometry(); | 272 | render_window->BackupGeometry(); |
| 282 | ui.horizontalLayout->addWidget(render_window); | 273 | ui.horizontalLayout->addWidget(render_window); |
| 283 | render_window->setVisible(true); | 274 | render_window->setVisible(true); |
| 284 | render_window->setFocusPolicy(Qt::ClickFocus); | 275 | render_window->setFocusPolicy(Qt::ClickFocus); |
| 285 | render_window->setFocus(); | 276 | render_window->setFocus(); |
| 277 | |||
| 278 | } else { | ||
| 279 | // Render in a separate window... | ||
| 280 | ui.horizontalLayout->removeWidget(render_window); | ||
| 281 | render_window->setParent(nullptr); | ||
| 282 | render_window->setVisible(true); | ||
| 283 | render_window->RestoreGeometry(); | ||
| 284 | render_window->setFocusPolicy(Qt::NoFocus); | ||
| 286 | } | 285 | } |
| 287 | } | 286 | } |
| 288 | 287 | ||