diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/main.cpp | 80 | ||||
| -rw-r--r-- | src/yuzu/main.h | 4 | 
2 files changed, 45 insertions, 39 deletions
| diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index e97bfd976..2f84ada73 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -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(); +        UpdateGPUAccuracyButton();      }); -    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); +    UpdateGPUAccuracyButton(); +    statusBar()->insertPermanentWidget(0, gpu_accuracy_button);      // Setup Renderer API button      renderer_status_button = new QPushButton(); @@ -1401,8 +1388,6 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t          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) { @@ -1506,8 +1491,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; @@ -2947,12 +2930,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() { diff --git a/src/yuzu/main.h b/src/yuzu/main.h index 3eb6aed56..38e66ccd0 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -292,6 +292,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(); @@ -317,8 +318,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; | 
