mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	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
					
				
					 6 changed files with 37 additions and 11 deletions
				
			
		|  | @ -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; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue