From 056b38353657365c281ad466fa17842775607d7e Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Wed, 15 Apr 2026 00:22:36 -0500 Subject: [PATCH] Add SMBus Sleep Mode settings page --- qt/OpenRGBSettingsPage/OpenRGBSettingsPage.cpp | 47 +++- qt/OpenRGBSettingsPage/OpenRGBSettingsPage.h | 1 + qt/OpenRGBSettingsPage/OpenRGBSettingsPage.ui | 312 +++++++++++++------------ 3 files changed, 201 insertions(+), 159 deletions(-) diff --git a/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.cpp b/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.cpp index b89dbada..c34fc45b 100644 --- a/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.cpp +++ b/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.cpp @@ -239,24 +239,28 @@ OpenRGBSettingsPage::OpenRGBSettingsPage(QWidget *parent) : ui->TextDetectionDelay->setValue(0); } +#if defined(_MACOSX_X86_X64) /*---------------------------------------------------------*\ - | Load drivers settings (Windows only or Mac) | + | Load drivers settings (MacOS only) | \*---------------------------------------------------------*/ -#if defined(WIN32) || defined(_MACOSX_X86_X64) json drivers_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Drivers"); + ui->CheckboxSharedSMBusAccess->hide(); + ui->LabelSMBusSleepMode->hide(); + ui->ComboBoxSMBusSleepMode->hide(); + if(drivers_settings.contains("amd_smbus_reduce_cpu")) { ui->CheckboxAMDSMBusReduceCPU->setChecked(drivers_settings["amd_smbus_reduce_cpu"]); } -#else - ui->DriversSettingsLabel->hide(); - ui->CheckboxAMDSMBusReduceCPU->hide(); -#endif +#elif defined(_WIN32) /*---------------------------------------------------------*\ | Load drivers settings (Windows only) | \*---------------------------------------------------------*/ -#ifdef _WIN32 + json drivers_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Drivers"); + + ui->CheckboxAMDSMBusReduceCPU->hide(); + if(drivers_settings.contains("shared_smbus_access")) { ui->CheckboxSharedSMBusAccess->setChecked(drivers_settings["shared_smbus_access"]); @@ -265,10 +269,29 @@ OpenRGBSettingsPage::OpenRGBSettingsPage(QWidget *parent) : { ui->CheckboxSharedSMBusAccess->setChecked(true); } + + ui->ComboBoxSMBusSleepMode->addItem("Always Busy"); + ui->ComboBoxSMBusSleepMode->addItem("Short Busy"); + ui->ComboBoxSMBusSleepMode->addItem("Always Sleep"); + + if(drivers_settings.contains("smbus_sleep_mode") && (drivers_settings["smbus_sleep_mode"] <= 2)) + { + ui->ComboBoxSMBusSleepMode->setCurrentIndex(drivers_settings["smbus_sleep_mode"]); + } + else + { + ui->ComboBoxSMBusSleepMode->setCurrentIndex(2); + } #else + /*---------------------------------------------------------*\ + | Hide all drivers settings otherwise | + \*---------------------------------------------------------*/ + ui->DriversSettingsLabel->hide(); + ui->CheckboxAMDSMBusReduceCPU->hide(); ui->CheckboxSharedSMBusAccess->hide(); + ui->LabelSMBusSleepMode->hide(); + ui->ComboBoxSMBusSleepMode->hide(); #endif - UpdateProfiles(); /*---------------------------------------------------------*\ @@ -1072,6 +1095,14 @@ void OpenRGBSettingsPage::on_CheckboxSharedSMBusAccess_clicked() SaveSettings(); } +void OpenRGBSettingsPage::on_ComboBoxSMBusSleepMode_currentIndexChanged(int index) +{ + json drivers_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Drivers"); + drivers_settings["smbus_sleep_mode"] = index; + ResourceManager::get()->GetSettingsManager()->SetSettings("Drivers", drivers_settings); + SaveSettings(); +} + void OpenRGBSettingsPage::on_CheckboxDisableKeyExpansion_clicked() { json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); diff --git a/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.h b/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.h index 1e6fe400..4502affd 100644 --- a/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.h +++ b/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.h @@ -82,6 +82,7 @@ private slots: void on_TextDetectionDelay_valueChanged(int); void on_CheckboxAMDSMBusReduceCPU_clicked(); void on_CheckboxSharedSMBusAccess_clicked(); + void on_ComboBoxSMBusSleepMode_currentIndexChanged(int index); void on_CheckboxSetOnExit_clicked(bool checked); void on_ComboBoxExitProfile_currentTextChanged(const QString exit_profile_name); diff --git a/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.ui b/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.ui index 8acfe859..1836a74c 100644 --- a/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.ui +++ b/qt/OpenRGBSettingsPage/OpenRGBSettingsPage.ui @@ -30,47 +30,60 @@ 0 - -328 + -321 508 - 1105 + 1137 - - + + - Enable Log Console (restart required) + Detection Settings: - - + + - Load Profile + Set Server Host - - - - Disable Key Expansion in Device View + + + + 1 + + + 65535 + + + 6742 - - + + - Shared SMBus Access (restart required) + User Interface Settings: - - + + - - + + - Start at Login Status + Theme (restart required) + + + + + + + Set Profile on Suspend @@ -81,133 +94,154 @@ - - + + + + + - Hex Format + Server Settings: - - + + - Show LED View by Default + Enable Log File (restart required) - - + + - Legacy Workaround + Drivers Settings: - - + + + + Language + + - - + + - Theme (restart required) + Legacy Workaround - - + + + + 2147483647 + + - - + + - Detection Settings: + Start at Login Status - - + + - Serve All Devices (Including those from client connections) + Minimize on Close - - + + - - + + - AMD SMBus: Reduce CPU Usage (restart required) + Shared SMBus Access (restart required) - - - - - + + - Start at Login Settings: + Greyscale Tray Icon - - + + - Set Server Host + Enable Log Console (restart required) - - + + - Greyscale Tray Icon + Set Server Port - - + + - - + + - Start Minimized + Start at Login Settings: - + + + + Start Client + + + + - - + + - Start at Login + Load Profile - - + + - - + + - HID Safe Mode + Set Profile on Exit - - + + + + + - Start Client + Hex Format - - + + - User Interface Settings: + Start at Login - + + + + Qt::Orientation::Vertical @@ -223,136 +257,112 @@ - - - - - - - Minimize on Close - - - - - + + - Server Settings: + Save Geometry on Close - - + + - Save Geometry on Close + AMD SMBus: Reduce CPU Usage (restart required) - + Start Server - - + + - Set Server Port + HID Safe Mode - - + + - Set Profile on Suspend + Initial Detection Delay (milliseconds, 0 to disable) - - + + - Run Zone Checks on Rescan + Disable Key Expansion in Device View - - + + - Log Manager Settings: + Serve All Devices (Including those from client connections) - - + + + + + - Enable Log File (restart required) + Start Minimized - - - - 1 - - - 65535 - - - 6742 + + + + Show LED View by Default - - + + + + + - Set Profile on Resume + Log Manager Settings: - - + + - Language + Set Profile on Resume - - + + - Drivers Settings: + Run Zone Checks on Rescan - + Custom Arguments - - - - - - - Set Profile on Exit - - - - - + + - Initial Detection Delay (milliseconds, 0 to disable) + SMBus Sleep Mode (restart required) - - - - 2147483647 - - + +