From 34a572f1ae46f00cef3f06c0fc2b380fad668e4d Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 18 May 2023 10:11:28 +0600 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8=D1=82=D0=BC?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=B0=20=D0=BE=D0=BF=D1=86?= =?UTF-8?q?=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-bootloader.cc | 70 +++++++++++++++++++++++++------ source/ubl-settings-bootloader.h | 1 + 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index 0a29560..29b5162 100644 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -230,11 +230,13 @@ void MainWindow::item_selected_kernel(const Gtk::TreeModel::Path&, const Gtk::Tr treeViewOTT->get_selection()->unselect_all(); treeViewUser->get_selection()->unselect_all(); treeViewMelody->get_selection()->unselect_all(); - if (flag_blocked_tree_view == false) { - string str_flags = template_item_selected(size_kernel, list_store_kernel, "GRUB_CMDLINE_LINUX"); - map_cmd_selection["GRUB_CMDLINE_LINUX"] = str_flags; - // Utils::str_replace_all(str_flags, " ", ", "); - entryKernel->set_text(str_flags); + if (flag_blocked_tree_view == false) { + if (this->intel_idle_cstate_check(size_kernel, list_store_kernel, "GRUB_CMDLINE_LINUX") == false) { + string str_flags = template_item_selected(size_kernel, list_store_kernel, "GRUB_CMDLINE_LINUX"); + map_cmd_selection["GRUB_CMDLINE_LINUX"] = str_flags; + // Utils::str_replace_all(str_flags, " ", ", "); + entryKernel->set_text(str_flags); + } } } @@ -244,10 +246,12 @@ void MainWindow::item_selected_OTT(const Gtk::TreeModel::Path&, const Gtk::TreeM treeViewUser->get_selection()->unselect_all(); treeViewMelody->get_selection()->unselect_all(); if (flag_blocked_tree_view == false) { - string str_flags = template_item_selected(size_OTT, list_store_OTT, "GRUB_TERMINAL_OUTPUT"); - map_cmd_selection["GRUB_TERMINAL_OUTPUT"] = str_flags; - // Utils::str_replace_all(str_flags, " ", ", "); - entryOTT->set_text(str_flags); + if (this->intel_idle_cstate_check(size_OTT, list_store_OTT, "GRUB_TERMINAL_OUTPUT") == false) { + string str_flags = template_item_selected(size_OTT, list_store_OTT, "GRUB_TERMINAL_OUTPUT"); + map_cmd_selection["GRUB_TERMINAL_OUTPUT"] = str_flags; + // Utils::str_replace_all(str_flags, " ", ", "); + entryOTT->set_text(str_flags); + } } } @@ -257,10 +261,12 @@ void MainWindow::item_selected_IPT(const Gtk::TreeModel::Path&, const Gtk::TreeM treeViewUser->get_selection()->unselect_all(); treeViewMelody->get_selection()->unselect_all(); if (flag_blocked_tree_view == false) { - string str_flags = template_item_selected(size_IPT, list_store_IPT, "GRUB_TERMINAL_INPUT"); - map_cmd_selection["GRUB_TERMINAL_INPUT"] = str_flags; - // Utils::str_replace_all(str_flags, " ", ", "); - entryIPT->set_text(str_flags); + if (this->intel_idle_cstate_check(size_IPT, list_store_IPT, "GRUB_TERMINAL_INPUT") == false) { + string str_flags = template_item_selected(size_IPT, list_store_IPT, "GRUB_TERMINAL_INPUT"); + map_cmd_selection["GRUB_TERMINAL_INPUT"] = str_flags; + // Utils::str_replace_all(str_flags, " ", ", "); + entryIPT->set_text(str_flags); + } } } @@ -317,6 +323,44 @@ void MainWindow::set_download_mode() { map_cmd_selection["GRUB_BOOT_SILENT"] = key; } +bool MainWindow::intel_idle_cstate_check(int size, Glib::RefPtr &list_store, string key) { + string cmds_old = map_cmd_selection[key]; + string cmds = ""; + string param = ""; + int index_1 = -1; + int index_4 = -1; + bool active = false; + for (int index = 0; index < size; index++) { + Gtk::TreeModel::Row row = list_store->children()[index]; + if(row) { + param = row[m_columns.name] + ""; + active = row[m_columns.check_button]; + if (param == "intel_idle.max_cstate=1" && active == true) { + index_1 = index; + } + else if (param == "intel_idle.max_cstate=4" && active == true) { + index_4 = index; + } + } + } + if (index_1 != -1 && index_4 != -1) { + if (cmds_old.find("intel_idle.max_cstate=1") == string::npos) { + Gtk::TreeModel::Row row = list_store->children()[index_4]; + row[m_columns.check_button] = false; + return true; + } + else if (cmds_old.find("intel_idle.max_cstate=4") == string::npos) { + Gtk::TreeModel::Row row = list_store->children()[index_1]; + row[m_columns.check_button] = false; + return true; + } + else { + return false; + } + } + return false; +} + string MainWindow::template_item_selected(int size, Glib::RefPtr &list_store, string key) { string cmds_old = map_cmd_selection[key]; string cmds = ""; diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index effb636..7a115fb 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -404,6 +404,7 @@ public: void set_add_data_user(Gtk::TreeModel::Row &row, bool flag, string &name, string &password); void set_init_data_user(std::map &map_temp); void set_init_data_superuser(std::map &map_temp); + bool intel_idle_cstate_check(int size, Glib::RefPtr &list_store, string key); }; class SettingsPlug : public Gtk::Plug