Port yuzu-emu/yuzu#7506 & yuzu-emu/yuzu#7861: "Fix yuzu-emu/yuzu#7502" & "yuzu: Mute audio when in background" (#7321)
This commit is contained in:
parent
57696b2c11
commit
015e42be05
|
@ -768,6 +768,7 @@ void Config::ReadUIValues() {
|
||||||
ReadBasicSetting(UISettings::values.callout_flags);
|
ReadBasicSetting(UISettings::values.callout_flags);
|
||||||
ReadBasicSetting(UISettings::values.show_console);
|
ReadBasicSetting(UISettings::values.show_console);
|
||||||
ReadBasicSetting(UISettings::values.pause_when_in_background);
|
ReadBasicSetting(UISettings::values.pause_when_in_background);
|
||||||
|
ReadBasicSetting(UISettings::values.mute_when_in_background);
|
||||||
ReadBasicSetting(UISettings::values.hide_mouse);
|
ReadBasicSetting(UISettings::values.hide_mouse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1239,6 +1240,7 @@ void Config::SaveUIValues() {
|
||||||
WriteBasicSetting(UISettings::values.callout_flags);
|
WriteBasicSetting(UISettings::values.callout_flags);
|
||||||
WriteBasicSetting(UISettings::values.show_console);
|
WriteBasicSetting(UISettings::values.show_console);
|
||||||
WriteBasicSetting(UISettings::values.pause_when_in_background);
|
WriteBasicSetting(UISettings::values.pause_when_in_background);
|
||||||
|
WriteBasicSetting(UISettings::values.mute_when_in_background);
|
||||||
WriteBasicSetting(UISettings::values.hide_mouse);
|
WriteBasicSetting(UISettings::values.hide_mouse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,8 @@ void ConfigureGeneral::SetConfiguration() {
|
||||||
ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing.GetValue());
|
ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing.GetValue());
|
||||||
ui->toggle_background_pause->setChecked(
|
ui->toggle_background_pause->setChecked(
|
||||||
UISettings::values.pause_when_in_background.GetValue());
|
UISettings::values.pause_when_in_background.GetValue());
|
||||||
|
ui->toggle_background_mute->setChecked(
|
||||||
|
UISettings::values.mute_when_in_background.GetValue());
|
||||||
ui->toggle_hide_mouse->setChecked(UISettings::values.hide_mouse.GetValue());
|
ui->toggle_hide_mouse->setChecked(UISettings::values.hide_mouse.GetValue());
|
||||||
|
|
||||||
ui->toggle_update_check->setChecked(
|
ui->toggle_update_check->setChecked(
|
||||||
|
@ -174,6 +176,7 @@ void ConfigureGeneral::ApplyConfiguration() {
|
||||||
if (Settings::IsConfiguringGlobal()) {
|
if (Settings::IsConfiguringGlobal()) {
|
||||||
UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked();
|
UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked();
|
||||||
UISettings::values.pause_when_in_background = ui->toggle_background_pause->isChecked();
|
UISettings::values.pause_when_in_background = ui->toggle_background_pause->isChecked();
|
||||||
|
UISettings::values.mute_when_in_background = ui->toggle_background_mute->isChecked();
|
||||||
UISettings::values.hide_mouse = ui->toggle_hide_mouse->isChecked();
|
UISettings::values.hide_mouse = ui->toggle_hide_mouse->isChecked();
|
||||||
|
|
||||||
UISettings::values.check_for_update_on_start = ui->toggle_update_check->isChecked();
|
UISettings::values.check_for_update_on_start = ui->toggle_update_check->isChecked();
|
||||||
|
|
|
@ -36,6 +36,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="toggle_background_mute">
|
||||||
|
<property name="text">
|
||||||
|
<string>Mute audio when in background</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="toggle_hide_mouse">
|
<widget class="QCheckBox" name="toggle_hide_mouse">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
|
@ -778,23 +778,35 @@ void GMainWindow::RestoreUIState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnAppFocusStateChanged(Qt::ApplicationState state) {
|
void GMainWindow::OnAppFocusStateChanged(Qt::ApplicationState state) {
|
||||||
if (!UISettings::values.pause_when_in_background) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (state != Qt::ApplicationHidden && state != Qt::ApplicationInactive &&
|
if (state != Qt::ApplicationHidden && state != Qt::ApplicationInactive &&
|
||||||
state != Qt::ApplicationActive) {
|
state != Qt::ApplicationActive) {
|
||||||
LOG_DEBUG(Frontend, "ApplicationState unusual flag: {} ", state);
|
LOG_DEBUG(Frontend, "ApplicationState unusual flag: {} ", state);
|
||||||
}
|
}
|
||||||
if (ui->action_Pause->isEnabled() &&
|
if (!emulation_running) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (UISettings::values.pause_when_in_background) {
|
||||||
|
if (emu_thread->IsRunning() &&
|
||||||
(state & (Qt::ApplicationHidden | Qt::ApplicationInactive))) {
|
(state & (Qt::ApplicationHidden | Qt::ApplicationInactive))) {
|
||||||
auto_paused = true;
|
auto_paused = true;
|
||||||
OnPauseGame();
|
OnPauseGame();
|
||||||
} else if (emulation_running && !emu_thread->IsRunning() && auto_paused &&
|
} else if (!emu_thread->IsRunning() && auto_paused && state == Qt::ApplicationActive) {
|
||||||
state == Qt::ApplicationActive) {
|
|
||||||
auto_paused = false;
|
auto_paused = false;
|
||||||
OnStartGame();
|
OnStartGame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (UISettings::values.mute_when_in_background) {
|
||||||
|
if (!Settings::values.audio_muted &&
|
||||||
|
(state & (Qt::ApplicationHidden | Qt::ApplicationInactive))) {
|
||||||
|
Settings::values.audio_muted = true;
|
||||||
|
auto_muted = true;
|
||||||
|
} else if (auto_muted && state == Qt::ApplicationActive) {
|
||||||
|
Settings::values.audio_muted = false;
|
||||||
|
auto_muted = false;
|
||||||
|
}
|
||||||
|
UpdateVolumeUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool GApplicationEventFilter::eventFilter(QObject* object, QEvent* event) {
|
bool GApplicationEventFilter::eventFilter(QObject* object, QEvent* event) {
|
||||||
if (event->type() == QEvent::FileOpen) {
|
if (event->type() == QEvent::FileOpen) {
|
||||||
|
|
|
@ -325,6 +325,7 @@ private:
|
||||||
QString game_path;
|
QString game_path;
|
||||||
|
|
||||||
bool auto_paused = false;
|
bool auto_paused = false;
|
||||||
|
bool auto_muted = false;
|
||||||
QTimer mouse_hide_timer;
|
QTimer mouse_hide_timer;
|
||||||
|
|
||||||
// Movie
|
// Movie
|
||||||
|
|
|
@ -80,6 +80,7 @@ struct Values {
|
||||||
Settings::Setting<bool> save_state_warning{true, "saveStateWarning"};
|
Settings::Setting<bool> save_state_warning{true, "saveStateWarning"};
|
||||||
Settings::Setting<bool> first_start{true, "firstStart"};
|
Settings::Setting<bool> first_start{true, "firstStart"};
|
||||||
Settings::Setting<bool> pause_when_in_background{false, "pauseWhenInBackground"};
|
Settings::Setting<bool> pause_when_in_background{false, "pauseWhenInBackground"};
|
||||||
|
Settings::Setting<bool> mute_when_in_background{false, "muteWhenInBackground"};
|
||||||
Settings::Setting<bool> hide_mouse{false, "hideInactiveMouse"};
|
Settings::Setting<bool> hide_mouse{false, "hideInactiveMouse"};
|
||||||
|
|
||||||
bool updater_found;
|
bool updater_found;
|
||||||
|
|
Reference in New Issue