yuzu: main: Register a callback for Exit
This commit is contained in:
parent
d8467ca6c0
commit
282bdfd1bf
|
@ -302,12 +302,17 @@ GRenderWindow::GRenderWindow(GMainWindow* parent, EmuThread* emu_thread_,
|
|||
connect(this, &GRenderWindow::FirstFrameDisplayed, parent, &GMainWindow::OnLoadComplete);
|
||||
connect(this, &GRenderWindow::ExecuteProgramSignal, parent, &GMainWindow::OnExecuteProgram,
|
||||
Qt::QueuedConnection);
|
||||
connect(this, &GRenderWindow::ExitSignal, parent, &GMainWindow::OnExit, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void GRenderWindow::ExecuteProgram(std::size_t program_index) {
|
||||
emit ExecuteProgramSignal(program_index);
|
||||
}
|
||||
|
||||
void GRenderWindow::Exit() {
|
||||
emit ExitSignal();
|
||||
}
|
||||
|
||||
GRenderWindow::~GRenderWindow() {
|
||||
input_subsystem->Shutdown();
|
||||
}
|
||||
|
|
|
@ -181,6 +181,9 @@ public:
|
|||
*/
|
||||
void ExecuteProgram(std::size_t program_index);
|
||||
|
||||
/// Instructs the window to exit the application.
|
||||
void Exit();
|
||||
|
||||
public slots:
|
||||
void OnEmulationStarting(EmuThread* emu_thread);
|
||||
void OnEmulationStopping();
|
||||
|
@ -191,6 +194,7 @@ signals:
|
|||
void Closed();
|
||||
void FirstFrameDisplayed();
|
||||
void ExecuteProgramSignal(std::size_t program_index);
|
||||
void ExitSignal();
|
||||
void MouseActivity();
|
||||
|
||||
private:
|
||||
|
|
|
@ -1384,6 +1384,9 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
|
|||
system.RegisterExecuteProgramCallback(
|
||||
[this](std::size_t program_index) { render_window->ExecuteProgram(program_index); });
|
||||
|
||||
// Register an Exit callback such that Core can exit the currently running application.
|
||||
system.RegisterExitCallback([this]() { render_window->Exit(); });
|
||||
|
||||
connect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame);
|
||||
connect(render_window, &GRenderWindow::MouseActivity, this, &GMainWindow::OnMouseActivity);
|
||||
// BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views
|
||||
|
@ -2469,6 +2472,10 @@ void GMainWindow::OnExecuteProgram(std::size_t program_index) {
|
|||
BootGame(last_filename_booted, 0, program_index);
|
||||
}
|
||||
|
||||
void GMainWindow::OnExit() {
|
||||
OnStopGame();
|
||||
}
|
||||
|
||||
void GMainWindow::ErrorDisplayDisplayError(QString error_code, QString error_text) {
|
||||
OverlayDialog dialog(render_window, Core::System::GetInstance(), error_code, error_text,
|
||||
QString{}, tr("OK"), Qt::AlignLeft | Qt::AlignVCenter);
|
||||
|
|
|
@ -153,6 +153,7 @@ signals:
|
|||
public slots:
|
||||
void OnLoadComplete();
|
||||
void OnExecuteProgram(std::size_t program_index);
|
||||
void OnExit();
|
||||
void ControllerSelectorReconfigureControllers(
|
||||
const Core::Frontend::ControllerParameters& parameters);
|
||||
void SoftwareKeyboardInitialize(
|
||||
|
|
Reference in New Issue