mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-22 06:42:46 +01:00
Settings: Eliminate ASYNC & MULTICORE Toggles and add GPU Accuracy Toggle.
This commit is contained in:
parent
5edc96f4a4
commit
fd09be5496
5 changed files with 108 additions and 40 deletions
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;
|
||||
}
|
||||
|
||||
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 {
|
||||
min-width: 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;
|
||||
}
|
||||
|
||||
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 {
|
||||
min-width: 23px;
|
||||
min-height: 23px;
|
||||
|
|
|
@ -2186,6 +2186,27 @@ QPushButton#RendererStatusBarButton:!checked {
|
|||
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 {
|
||||
min-width: 19px;
|
||||
min-height: 19px;
|
||||
|
|
|
@ -789,41 +789,28 @@ void GMainWindow::InitializeWidgets() {
|
|||
dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
|
||||
statusBar()->insertPermanentWidget(0, dock_status_button);
|
||||
|
||||
// Setup ASync button
|
||||
async_status_button = new QPushButton();
|
||||
async_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
|
||||
async_status_button->setFocusPolicy(Qt::NoFocus);
|
||||
connect(async_status_button, &QPushButton::clicked, [&] {
|
||||
if (emulation_running) {
|
||||
return;
|
||||
gpu_accuracy_button = new QPushButton();
|
||||
gpu_accuracy_button->setObjectName(QStringLiteral("GPUStatusBarButton"));
|
||||
gpu_accuracy_button->setCheckable(true);
|
||||
gpu_accuracy_button->setFocusPolicy(Qt::NoFocus);
|
||||
connect(gpu_accuracy_button, &QPushButton::clicked, [this] {
|
||||
switch (Settings::values.gpu_accuracy.GetValue()) {
|
||||
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);
|
||||
statusBar()->insertPermanentWidget(0, async_status_button);
|
||||
Core::System::GetInstance().ApplySettings();
|
||||
UpdateGPUAccuracyButton();
|
||||
});
|
||||
UpdateGPUAccuracyButton();
|
||||
statusBar()->insertPermanentWidget(0, gpu_accuracy_button);
|
||||
|
||||
// Setup Renderer API button
|
||||
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();
|
||||
}
|
||||
status_bar_update_timer.start(500);
|
||||
async_status_button->setDisabled(true);
|
||||
multicore_status_button->setDisabled(true);
|
||||
renderer_status_button->setDisabled(true);
|
||||
|
||||
if (UISettings::values.hide_mouse || Settings::values.mouse_panning) {
|
||||
|
@ -1500,8 +1485,6 @@ void GMainWindow::ShutdownGame() {
|
|||
emu_speed_label->setVisible(false);
|
||||
game_fps_label->setVisible(false);
|
||||
emu_frametime_label->setVisible(false);
|
||||
async_status_button->setEnabled(true);
|
||||
multicore_status_button->setEnabled(true);
|
||||
renderer_status_button->setEnabled(true);
|
||||
|
||||
emulation_running = false;
|
||||
|
@ -2921,12 +2904,35 @@ void GMainWindow::UpdateStatusBar() {
|
|||
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() {
|
||||
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() ==
|
||||
Settings::RendererBackend::Vulkan);
|
||||
UpdateGPUAccuracyButton();
|
||||
}
|
||||
|
||||
void GMainWindow::UpdateUISettings() {
|
||||
|
|
|
@ -291,6 +291,7 @@ private:
|
|||
void UpdateWindowTitle(std::string_view title_name = {}, std::string_view title_version = {},
|
||||
std::string_view gpu_vendor = {});
|
||||
void UpdateStatusBar();
|
||||
void UpdateGPUAccuracyButton();
|
||||
void UpdateStatusButtons();
|
||||
void UpdateUISettings();
|
||||
void HideMouseCursor();
|
||||
|
@ -316,8 +317,7 @@ private:
|
|||
QLabel* emu_speed_label = nullptr;
|
||||
QLabel* game_fps_label = nullptr;
|
||||
QLabel* emu_frametime_label = nullptr;
|
||||
QPushButton* async_status_button = nullptr;
|
||||
QPushButton* multicore_status_button = nullptr;
|
||||
QPushButton* gpu_accuracy_button = nullptr;
|
||||
QPushButton* renderer_status_button = nullptr;
|
||||
QPushButton* dock_status_button = nullptr;
|
||||
QTimer status_bar_update_timer;
|
||||
|
|
Loading…
Reference in a new issue