summaryrefslogtreecommitdiff
path: root/src/citra_qt/main.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2015-04-16 18:35:09 -0400
committerGravatar bunnei2015-05-01 18:26:58 -0400
commit762c1a9ff5406afc4c6b1a3eb74dae2dc2fb0daf (patch)
tree74ac7be2a6f1b3dfd09986b598844440af9e2f8f /src/citra_qt/main.cpp
parentMerge pull request #717 from linkmauve/useless-auto (diff)
downloadyuzu-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.cpp55
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
49GMainWindow::GMainWindow() 49GMainWindow::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
233void GMainWindow::OnStartGame() 234void 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
242void GMainWindow::OnPauseGame() 243void 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
251void GMainWindow::OnStopGame() 252void 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
268void GMainWindow::ToggleWindowMode() 269void 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