Settings: Eliminate ASYNC & MULTICORE Toggles and add GPU Accuracy Toggle.
This commit is contained in:
		
							
								
								
									
										20
									
								
								dist/qt_themes/default/style.qss
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								dist/qt_themes/default/style.qss
									
									
									
									
										vendored
									
									
								
							| @@ -38,6 +38,26 @@ QPushButton#RendererStatusBarButton:!checked { | |||||||
|     color: #0066ff; |     color: #0066ff; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton { | ||||||
|  |     color: #656565; | ||||||
|  |     border: 1px solid transparent; | ||||||
|  |     background-color: transparent; | ||||||
|  |     padding: 0px 3px 0px 3px; | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:hover { | ||||||
|  |     border: 1px solid #76797C; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:checked { | ||||||
|  |     color: #ff8040; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:!checked { | ||||||
|  |     color: #40dd40; | ||||||
|  | } | ||||||
|  |  | ||||||
| QPushButton#buttonRefreshDevices { | QPushButton#buttonRefreshDevices { | ||||||
|     min-width: 21px; |     min-width: 21px; | ||||||
|     min-height: 21px; |     min-height: 21px; | ||||||
|   | |||||||
							
								
								
									
										21
									
								
								dist/qt_themes/qdarkstyle/style.qss
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								dist/qt_themes/qdarkstyle/style.qss
									
									
									
									
										vendored
									
									
								
							| @@ -1283,6 +1283,27 @@ QPushButton#RendererStatusBarButton:!checked { | |||||||
|     color: #00ccdd; |     color: #00ccdd; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton { | ||||||
|  |     min-width: 0px; | ||||||
|  |     color: #656565; | ||||||
|  |     border: 1px solid transparent; | ||||||
|  |     background-color: transparent; | ||||||
|  |     padding: 0px 3px 0px 3px; | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:hover { | ||||||
|  |     border: 1px solid #76797C; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:checked { | ||||||
|  |     color: #ff8040; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:!checked { | ||||||
|  |     color: #40dd40; | ||||||
|  | } | ||||||
|  |  | ||||||
| QPushButton#buttonRefreshDevices { | QPushButton#buttonRefreshDevices { | ||||||
|     min-width: 23px; |     min-width: 23px; | ||||||
|     min-height: 23px; |     min-height: 23px; | ||||||
|   | |||||||
| @@ -2186,6 +2186,27 @@ QPushButton#RendererStatusBarButton:!checked { | |||||||
|   color: #00ccdd; |   color: #00ccdd; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton { | ||||||
|  |   min-width: 0px; | ||||||
|  |   color: #656565; | ||||||
|  |   border: 1px solid transparent; | ||||||
|  |   background-color: transparent; | ||||||
|  |   padding: 0px 3px 0px 3px; | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:hover { | ||||||
|  |   border: 1px solid #76797C; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:checked { | ||||||
|  |   color: #ff8040; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | QPushButton#GPUStatusBarButton:!checked { | ||||||
|  |   color: #40dd40; | ||||||
|  | } | ||||||
|  |  | ||||||
| QPushButton#buttonRefreshDevices { | QPushButton#buttonRefreshDevices { | ||||||
|   min-width: 19px; |   min-width: 19px; | ||||||
|   min-height: 19px; |   min-height: 19px; | ||||||
|   | |||||||
| @@ -789,41 +789,28 @@ void GMainWindow::InitializeWidgets() { | |||||||
|     dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); |     dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); | ||||||
|     statusBar()->insertPermanentWidget(0, dock_status_button); |     statusBar()->insertPermanentWidget(0, dock_status_button); | ||||||
|  |  | ||||||
|     // Setup ASync button |     gpu_accuracy_button = new QPushButton(); | ||||||
|     async_status_button = new QPushButton(); |     gpu_accuracy_button->setObjectName(QStringLiteral("GPUStatusBarButton")); | ||||||
|     async_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton")); |     gpu_accuracy_button->setCheckable(true); | ||||||
|     async_status_button->setFocusPolicy(Qt::NoFocus); |     gpu_accuracy_button->setFocusPolicy(Qt::NoFocus); | ||||||
|     connect(async_status_button, &QPushButton::clicked, [&] { |     connect(gpu_accuracy_button, &QPushButton::clicked, [this] { | ||||||
|         if (emulation_running) { |         switch (Settings::values.gpu_accuracy.GetValue()) { | ||||||
|             return; |         case Settings::GPUAccuracy::High: { | ||||||
|  |             Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::Normal); | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |         case Settings::GPUAccuracy::Normal: | ||||||
|  |         case Settings::GPUAccuracy::Extreme: | ||||||
|  |         default: { | ||||||
|  |             Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::High); | ||||||
|         } |         } | ||||||
|         Settings::values.use_asynchronous_gpu_emulation.SetValue( |  | ||||||
|             !Settings::values.use_asynchronous_gpu_emulation.GetValue()); |  | ||||||
|         async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue()); |  | ||||||
|         Core::System::GetInstance().ApplySettings(); |  | ||||||
|     }); |  | ||||||
|     async_status_button->setText(tr("ASYNC")); |  | ||||||
|     async_status_button->setCheckable(true); |  | ||||||
|     async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue()); |  | ||||||
|  |  | ||||||
|     // Setup Multicore button |  | ||||||
|     multicore_status_button = new QPushButton(); |  | ||||||
|     multicore_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton")); |  | ||||||
|     multicore_status_button->setFocusPolicy(Qt::NoFocus); |  | ||||||
|     connect(multicore_status_button, &QPushButton::clicked, [&] { |  | ||||||
|         if (emulation_running) { |  | ||||||
|             return; |  | ||||||
|         } |         } | ||||||
|         Settings::values.use_multi_core.SetValue(!Settings::values.use_multi_core.GetValue()); |  | ||||||
|         multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue()); |  | ||||||
|         Core::System::GetInstance().ApplySettings(); |  | ||||||
|     }); |  | ||||||
|     multicore_status_button->setText(tr("MULTICORE")); |  | ||||||
|     multicore_status_button->setCheckable(true); |  | ||||||
|     multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue()); |  | ||||||
|  |  | ||||||
|     statusBar()->insertPermanentWidget(0, multicore_status_button); |         Core::System::GetInstance().ApplySettings(); | ||||||
|     statusBar()->insertPermanentWidget(0, async_status_button); |         UpdateGPUAccuracyButton(); | ||||||
|  |     }); | ||||||
|  |     UpdateGPUAccuracyButton(); | ||||||
|  |     statusBar()->insertPermanentWidget(0, gpu_accuracy_button); | ||||||
|  |  | ||||||
|     // Setup Renderer API button |     // Setup Renderer API button | ||||||
|     renderer_status_button = new QPushButton(); |     renderer_status_button = new QPushButton(); | ||||||
| @@ -1397,8 +1384,6 @@ void GMainWindow::BootGame(const QString& filename, std::size_t program_index, S | |||||||
|         game_list_placeholder->hide(); |         game_list_placeholder->hide(); | ||||||
|     } |     } | ||||||
|     status_bar_update_timer.start(500); |     status_bar_update_timer.start(500); | ||||||
|     async_status_button->setDisabled(true); |  | ||||||
|     multicore_status_button->setDisabled(true); |  | ||||||
|     renderer_status_button->setDisabled(true); |     renderer_status_button->setDisabled(true); | ||||||
|  |  | ||||||
|     if (UISettings::values.hide_mouse || Settings::values.mouse_panning) { |     if (UISettings::values.hide_mouse || Settings::values.mouse_panning) { | ||||||
| @@ -1500,8 +1485,6 @@ void GMainWindow::ShutdownGame() { | |||||||
|     emu_speed_label->setVisible(false); |     emu_speed_label->setVisible(false); | ||||||
|     game_fps_label->setVisible(false); |     game_fps_label->setVisible(false); | ||||||
|     emu_frametime_label->setVisible(false); |     emu_frametime_label->setVisible(false); | ||||||
|     async_status_button->setEnabled(true); |  | ||||||
|     multicore_status_button->setEnabled(true); |  | ||||||
|     renderer_status_button->setEnabled(true); |     renderer_status_button->setEnabled(true); | ||||||
|  |  | ||||||
|     emulation_running = false; |     emulation_running = false; | ||||||
| @@ -2921,12 +2904,35 @@ void GMainWindow::UpdateStatusBar() { | |||||||
|     emu_frametime_label->setVisible(true); |     emu_frametime_label->setVisible(true); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void GMainWindow::UpdateGPUAccuracyButton() { | ||||||
|  |     switch (Settings::values.gpu_accuracy.GetValue()) { | ||||||
|  |     case Settings::GPUAccuracy::Normal: { | ||||||
|  |         gpu_accuracy_button->setText(tr("GPU NORMAL ")); | ||||||
|  |         gpu_accuracy_button->setChecked(false); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |     case Settings::GPUAccuracy::High: { | ||||||
|  |         gpu_accuracy_button->setText(tr("GPU HIGH   ")); | ||||||
|  |         gpu_accuracy_button->setChecked(true); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |     case Settings::GPUAccuracy::Extreme: { | ||||||
|  |         gpu_accuracy_button->setText(tr("GPU EXTREME")); | ||||||
|  |         gpu_accuracy_button->setChecked(true); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |     default: { | ||||||
|  |         gpu_accuracy_button->setText(tr("GPU ERROR")); | ||||||
|  |         gpu_accuracy_button->setChecked(true); | ||||||
|  |     } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| void GMainWindow::UpdateStatusButtons() { | void GMainWindow::UpdateStatusButtons() { | ||||||
|     dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); |     dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); | ||||||
|     multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue()); |  | ||||||
|     async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue()); |  | ||||||
|     renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() == |     renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() == | ||||||
|                                        Settings::RendererBackend::Vulkan); |                                        Settings::RendererBackend::Vulkan); | ||||||
|  |     UpdateGPUAccuracyButton(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void GMainWindow::UpdateUISettings() { | void GMainWindow::UpdateUISettings() { | ||||||
|   | |||||||
| @@ -291,6 +291,7 @@ private: | |||||||
|     void UpdateWindowTitle(std::string_view title_name = {}, std::string_view title_version = {}, |     void UpdateWindowTitle(std::string_view title_name = {}, std::string_view title_version = {}, | ||||||
|                            std::string_view gpu_vendor = {}); |                            std::string_view gpu_vendor = {}); | ||||||
|     void UpdateStatusBar(); |     void UpdateStatusBar(); | ||||||
|  |     void UpdateGPUAccuracyButton(); | ||||||
|     void UpdateStatusButtons(); |     void UpdateStatusButtons(); | ||||||
|     void UpdateUISettings(); |     void UpdateUISettings(); | ||||||
|     void HideMouseCursor(); |     void HideMouseCursor(); | ||||||
| @@ -316,8 +317,7 @@ private: | |||||||
|     QLabel* emu_speed_label = nullptr; |     QLabel* emu_speed_label = nullptr; | ||||||
|     QLabel* game_fps_label = nullptr; |     QLabel* game_fps_label = nullptr; | ||||||
|     QLabel* emu_frametime_label = nullptr; |     QLabel* emu_frametime_label = nullptr; | ||||||
|     QPushButton* async_status_button = nullptr; |     QPushButton* gpu_accuracy_button = nullptr; | ||||||
|     QPushButton* multicore_status_button = nullptr; |  | ||||||
|     QPushButton* renderer_status_button = nullptr; |     QPushButton* renderer_status_button = nullptr; | ||||||
|     QPushButton* dock_status_button = nullptr; |     QPushButton* dock_status_button = nullptr; | ||||||
|     QTimer status_bar_update_timer; |     QTimer status_bar_update_timer; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user