diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/configuration/configure_general.cpp | 32 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.h | 1 | 
2 files changed, 32 insertions, 1 deletions
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp index 537d6e576..b322258a0 100644 --- a/src/yuzu/configuration/configure_general.cpp +++ b/src/yuzu/configuration/configure_general.cpp @@ -3,6 +3,10 @@  // Refer to the license.txt file included.  #include "core/core.h" +#include "core/hle/service/am/am.h" +#include "core/hle/service/am/applet_ae.h" +#include "core/hle/service/am/applet_oe.h" +#include "core/hle/service/sm/sm.h"  #include "core/settings.h"  #include "ui_configure_general.h"  #include "yuzu/configuration/configure_general.h" @@ -20,7 +24,6 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent)      this->setConfiguration();      ui->use_cpu_jit->setEnabled(!Core::System::GetInstance().IsPoweredOn()); -    ui->use_docked_mode->setEnabled(!Core::System::GetInstance().IsPoweredOn());  }  ConfigureGeneral::~ConfigureGeneral() = default; @@ -38,6 +41,30 @@ void ConfigureGeneral::PopulateHotkeyList(const HotkeyRegistry& registry) {      ui->widget->Populate(registry);  } +void ConfigureGeneral::OnDockedModeChanged(bool last_state, bool new_state) { +    if (last_state == new_state) { +        return; +    } + +    Core::System& system{Core::System::GetInstance()}; +    Service::SM::ServiceManager& sm = system.ServiceManager(); + +    // Message queue is shared between these services, we just need to signal an operation +    // change to one and it will handle both automatically +    auto applet_oe = sm.GetService<Service::AM::AppletOE>("appletOE"); +    auto applet_ae = sm.GetService<Service::AM::AppletAE>("appletAE"); +    bool has_signalled = false; + +    if (applet_oe != nullptr) { +        applet_oe->GetMessageQueue()->OperationModeChanged(); +        has_signalled = true; +    } + +    if (applet_ae != nullptr && !has_signalled) { +        applet_ae->GetMessageQueue()->OperationModeChanged(); +    } +} +  void ConfigureGeneral::applyConfiguration() {      UISettings::values.gamedir_deepscan = ui->toggle_deepscan->isChecked();      UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked(); @@ -45,6 +72,9 @@ void ConfigureGeneral::applyConfiguration() {          ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString();      Settings::values.use_cpu_jit = ui->use_cpu_jit->isChecked(); +    const bool pre_docked_mode = Settings::values.use_docked_mode;      Settings::values.use_docked_mode = ui->use_docked_mode->isChecked(); +    OnDockedModeChanged(pre_docked_mode, Settings::values.use_docked_mode); +      Settings::values.enable_nfc = ui->enable_nfc->isChecked();  } diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h index 4770034cc..2210d48da 100644 --- a/src/yuzu/configuration/configure_general.h +++ b/src/yuzu/configuration/configure_general.h @@ -25,6 +25,7 @@ public:  private:      void setConfiguration(); +    void OnDockedModeChanged(bool last_state, bool new_state);      std::unique_ptr<Ui::ConfigureGeneral> ui;  };  | 
