snek
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
43 additions and
1 deletions
-
src/yuzu/main.cpp
-
src/yuzu/main.h
|
|
|
@ -386,6 +386,8 @@ GMainWindow::GMainWindow(bool has_broken_vulkan) |
|
|
|
SDL_EnableScreenSaver(); |
|
|
|
#endif
|
|
|
|
|
|
|
|
SetupPrepareForSleep(); |
|
|
|
|
|
|
|
Common::Log::Start(); |
|
|
|
|
|
|
|
QStringList args = QApplication::arguments(); |
|
|
|
@ -1327,6 +1329,43 @@ void GMainWindow::OnDisplayTitleBars(bool show) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void GMainWindow::SetupPrepareForSleep() { |
|
|
|
#ifdef __linux__
|
|
|
|
auto bus = QDBusConnection::systemBus(); |
|
|
|
if (bus.isConnected()) { |
|
|
|
const bool success = bus.connect( |
|
|
|
QStringLiteral("org.freedesktop.login1"), QStringLiteral("/org/freedesktop/login1"), |
|
|
|
QStringLiteral("org.freedesktop.login1.Manager"), QStringLiteral("PrepareForSleep"), |
|
|
|
QStringLiteral("b"), this, SLOT(OnPrepareForSleep(bool))); |
|
|
|
|
|
|
|
if (!success) { |
|
|
|
LOG_WARNING(Frontend, "Couldn't register PrepareForSleep signal"); |
|
|
|
} |
|
|
|
} else { |
|
|
|
LOG_WARNING(Frontend, "QDBusConnection system bus is not connected"); |
|
|
|
} |
|
|
|
#endif // __linux__
|
|
|
|
} |
|
|
|
|
|
|
|
void GMainWindow::OnPrepareForSleep(bool prepare_sleep) { |
|
|
|
if (emu_thread == nullptr) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (prepare_sleep) { |
|
|
|
if (emu_thread->IsRunning()) { |
|
|
|
auto_paused = true; |
|
|
|
OnPauseGame(); |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (!emu_thread->IsRunning() && auto_paused) { |
|
|
|
auto_paused = false; |
|
|
|
RequestGameResume(); |
|
|
|
OnStartGame(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef __linux__
|
|
|
|
static std::optional<QDBusObjectPath> HoldWakeLockLinux(u32 window_id = 0) { |
|
|
|
if (!QDBusConnection::sessionBus().isConnected()) { |
|
|
|
|
|
|
|
@ -204,7 +204,7 @@ private: |
|
|
|
void ConnectMenuEvents(); |
|
|
|
void UpdateMenuState(); |
|
|
|
|
|
|
|
MultiplayerState* multiplayer_state = nullptr; |
|
|
|
void SetupPrepareForSleep(); |
|
|
|
|
|
|
|
void PreventOSSleep(); |
|
|
|
void AllowOSSleep(); |
|
|
|
@ -265,6 +265,7 @@ private slots: |
|
|
|
void OnPauseGame(); |
|
|
|
void OnPauseContinueGame(); |
|
|
|
void OnStopGame(); |
|
|
|
void OnPrepareForSleep(bool prepare_sleep); |
|
|
|
void OnMenuReportCompatibility(); |
|
|
|
void OnOpenModsPage(); |
|
|
|
void OnOpenQuickstartGuide(); |
|
|
|
@ -355,6 +356,8 @@ private: |
|
|
|
std::unique_ptr<DiscordRPC::DiscordInterface> discord_rpc; |
|
|
|
std::shared_ptr<InputCommon::InputSubsystem> input_subsystem; |
|
|
|
|
|
|
|
MultiplayerState* multiplayer_state = nullptr; |
|
|
|
|
|
|
|
GRenderWindow* render_window; |
|
|
|
GameList* game_list; |
|
|
|
LoadingScreen* loading_screen; |
|
|
|
|