Add upstream patch to fix ThermalMonitor (rhbz#1464548)
Add several fixes from upstream
This commit is contained in:
parent
e9f703a035
commit
5edf9f427d
@ -0,0 +1,37 @@
|
||||
From 18989faac5138213a99f63346e49f4279caad9fb Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Thu, 20 Apr 2017 18:40:47 +0100
|
||||
Subject: [PATCH] Don't terminate the thermald engine if thd_engine is null
|
||||
|
||||
It is possible for a signal to occur before the thermald engine
|
||||
is up and running and hence trying to call the terminate method
|
||||
will result in a segmentation fault. Check to see if thd_engine
|
||||
is non-null before invoking thd_engine_terminate.
|
||||
|
||||
Fixes bug http://bugs.launchpad.net/bugs/1677427
|
||||
|
||||
Note: I was able to reproduce the bug by inserting a
|
||||
kill(getpid(), SIGTERM) after the signal handler was installed
|
||||
and before the thermald engine is started to reliably trip the
|
||||
issue. There is just a very small window where this bug can
|
||||
actually can occur.
|
||||
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
---
|
||||
src/main.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/main.cpp b/src/main.cpp
|
||||
index 14bd912..36abe7b 100644
|
||||
--- a/src/main.cpp
|
||||
+++ b/src/main.cpp
|
||||
@@ -137,7 +137,8 @@ bool check_thermald_running() {
|
||||
|
||||
// SIGTERM & SIGINT handler
|
||||
void sig_int_handler(int signum) {
|
||||
- thd_engine->thd_engine_terminate();
|
||||
+ if (thd_engine)
|
||||
+ thd_engine->thd_engine_terminate();
|
||||
sleep(1);
|
||||
if (g_main_loop)
|
||||
g_main_loop_quit(g_main_loop);
|
||||
@ -0,0 +1,40 @@
|
||||
From 9c5d8354dd8efff340a030c05f7beda03061cd0a Mon Sep 17 00:00:00 2001
|
||||
From: testuser <testuser>
|
||||
Date: Thu, 29 Jun 2017 17:24:51 -0700
|
||||
Subject: [PATCH] Fix dbus re-init accessing deleted pointer
|
||||
|
||||
As Colin King found, there is issue during reinit.
|
||||
thd_engine is deleted and then getting accessed.
|
||||
So store the parameters before deleting the thd_engine.
|
||||
---
|
||||
src/thd_dbus_interface.cpp | 10 ++++++----
|
||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/thd_dbus_interface.cpp b/src/thd_dbus_interface.cpp
|
||||
index b8e4ab0..6d0265d 100644
|
||||
--- a/src/thd_dbus_interface.cpp
|
||||
+++ b/src/thd_dbus_interface.cpp
|
||||
@@ -199,10 +199,6 @@ gboolean thd_dbus_interface_terminate(PrefObject *obj, GError **error) {
|
||||
gboolean thd_dbus_interface_reinit(PrefObject *obj, GError **error) {
|
||||
bool exclusive_control = false;
|
||||
|
||||
- thd_engine->thd_engine_terminate();
|
||||
- sleep(1);
|
||||
- delete thd_engine;
|
||||
- sleep(2);
|
||||
if (thd_engine->get_control_mode() == EXCLUSIVE)
|
||||
exclusive_control = true;
|
||||
|
||||
@@ -211,6 +207,12 @@ gboolean thd_dbus_interface_reinit(PrefObject *obj, GError **error) {
|
||||
if (!config_file.empty())
|
||||
conf_file = config_file.c_str();
|
||||
|
||||
+ thd_engine->thd_engine_terminate();
|
||||
+ sleep(1);
|
||||
+ delete thd_engine;
|
||||
+ sleep(2);
|
||||
+
|
||||
+
|
||||
if (thd_engine_create_default_engine(true, exclusive_control,
|
||||
conf_file) != THD_SUCCESS) {
|
||||
return FALSE;
|
||||
69
thermald-1.6-fix_typo_on_field_name_default_prefernce.patch
Normal file
69
thermald-1.6-fix_typo_on_field_name_default_prefernce.patch
Normal file
@ -0,0 +1,69 @@
|
||||
From 8f7d49be960dd19edaef452a89b541e4509caef7 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Tue, 18 Apr 2017 17:16:09 +0100
|
||||
Subject: [PATCH] fix typo on field name default_prefernce
|
||||
|
||||
Fix typo, default_prefernce should be default_preference
|
||||
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
---
|
||||
src/thd_parse.cpp | 10 +++++-----
|
||||
src/thd_parse.h | 2 +-
|
||||
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/thd_parse.cpp b/src/thd_parse.cpp
|
||||
index e96f9d0..b2828d1 100644
|
||||
--- a/src/thd_parse.cpp
|
||||
+++ b/src/thd_parse.cpp
|
||||
@@ -467,7 +467,7 @@ int cthd_parse::parse_new_platform_info(xmlNode * a_node, xmlDoc *doc,
|
||||
xmlNode *cur_node = NULL;
|
||||
char *tmp_value;
|
||||
|
||||
- info_ptr->default_prefernce = PREF_ENERGY_CONSERVE;
|
||||
+ info_ptr->default_preference = PREF_ENERGY_CONSERVE;
|
||||
|
||||
for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
|
||||
if (cur_node->type == XML_ELEMENT_NODE) {
|
||||
@@ -488,9 +488,9 @@ int cthd_parse::parse_new_platform_info(xmlNode * a_node, xmlDoc *doc,
|
||||
"Preference")) {
|
||||
char *pref_val = char_trim(tmp_value);
|
||||
if (pref_val && !strcasecmp(pref_val, "PERFORMANCE"))
|
||||
- info_ptr->default_prefernce = PREF_PERFORMANCE;
|
||||
+ info_ptr->default_preference = PREF_PERFORMANCE;
|
||||
else
|
||||
- info_ptr->default_prefernce = PREF_ENERGY_CONSERVE;
|
||||
+ info_ptr->default_preference = PREF_ENERGY_CONSERVE;
|
||||
} else if (!strcasecmp((const char*) cur_node->name,
|
||||
"ThermalZones")) {
|
||||
parse_thermal_zones(cur_node->children, doc, info_ptr);
|
||||
@@ -592,7 +592,7 @@ void cthd_parse::dump_thermal_conf() {
|
||||
thd_log_info(" *** Index %u ***\n", i);
|
||||
thd_log_info("Name: %s\n", thermal_info_list[i].name.c_str());
|
||||
thd_log_info("UUID: %s\n", thermal_info_list[i].uuid.c_str());
|
||||
- thd_log_info("type: %d\n", thermal_info_list[i].default_prefernce);
|
||||
+ thd_log_info("type: %d\n", thermal_info_list[i].default_preference);
|
||||
|
||||
for (unsigned int j = 0; j < thermal_info_list[i].sensors.size(); ++j) {
|
||||
thd_log_info("\tSensor %u \n", j);
|
||||
@@ -807,7 +807,7 @@ int cthd_parse::set_default_preference() {
|
||||
cthd_preference thd_pref;
|
||||
int ret;
|
||||
|
||||
- if (thermal_info_list[matched_thermal_info_index].default_prefernce
|
||||
+ if (thermal_info_list[matched_thermal_info_index].default_preference
|
||||
== PREF_PERFORMANCE)
|
||||
ret = thd_pref.set_preference("PERFORMANCE");
|
||||
else
|
||||
diff --git a/src/thd_parse.h b/src/thd_parse.h
|
||||
index 3b19a8e..6d7e890 100644
|
||||
--- a/src/thd_parse.h
|
||||
+++ b/src/thd_parse.h
|
||||
@@ -115,7 +115,7 @@ typedef struct {
|
||||
std::string name;
|
||||
std::string uuid;
|
||||
std::string product_name;
|
||||
- int default_prefernce;
|
||||
+ int default_preference;
|
||||
std::vector<thermal_sensor_t> sensors;
|
||||
std::vector<thermal_zone_t> zones;
|
||||
std::vector<cooling_dev_t> cooling_devs;
|
||||
@ -0,0 +1,25 @@
|
||||
From e311dc88d3acac7eca593efea5d95507b02608da Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Thu, 13 Apr 2017 12:03:53 +0100
|
||||
Subject: [PATCH] remove duplicate assignment to critical_temp
|
||||
|
||||
critical_temp is being assigned to zero twice, remove one of them
|
||||
as it is redundant.
|
||||
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
---
|
||||
src/thd_zone_cpu.cpp | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/thd_zone_cpu.cpp b/src/thd_zone_cpu.cpp
|
||||
index b6da9bf..051cbf8 100644
|
||||
--- a/src/thd_zone_cpu.cpp
|
||||
+++ b/src/thd_zone_cpu.cpp
|
||||
@@ -51,7 +51,6 @@ cthd_zone_cpu::cthd_zone_cpu(int index, std::string path, int package_id) :
|
||||
}
|
||||
|
||||
int cthd_zone_cpu::init() {
|
||||
- critical_temp = 0;
|
||||
int temp = 0;
|
||||
bool found = false;
|
||||
|
||||
37
thermald-1.6-removed_compile_flags.patch
Normal file
37
thermald-1.6-removed_compile_flags.patch
Normal file
@ -0,0 +1,37 @@
|
||||
From 90169f80a70efd4d5b6101e87666cd355dbd786f Mon Sep 17 00:00:00 2001
|
||||
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
|
||||
Date: Fri, 2 Jun 2017 08:04:57 -0700
|
||||
Subject: [PATCH] Removed compile flags
|
||||
|
||||
Removed -fpermissive and -fopenmp.
|
||||
---
|
||||
Android.mk | 2 +-
|
||||
Makefile.am | 2 --
|
||||
2 files changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Android.mk b/Android.mk
|
||||
index 092053d..8ef9cf3 100644
|
||||
--- a/Android.mk
|
||||
+++ b/Android.mk
|
||||
@@ -43,7 +43,7 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH) $(thermald_src_path) \
|
||||
system/core/include/
|
||||
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
-LOCAL_CFLAGS := -fpermissive -DTDRUNDIR='"/data/thermal-daemon"' -DTDCONFDIR='"/system/etc/thermal-daemon"'
|
||||
+LOCAL_CFLAGS := -DTDRUNDIR='"/data/thermal-daemon"' -DTDCONFDIR='"/system/etc/thermal-daemon"'
|
||||
LOCAL_STATIC_LIBRARIES := libxml2
|
||||
LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libc++ libicuuc libicui18n libbinder libutils
|
||||
LOCAL_PRELINK_MODULE := false
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 1ac26ed..ee96893 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -11,8 +11,6 @@ AM_CXXFLAGS = ${DBUS_CFLAGS}\
|
||||
-DTDRUNDIR=\"$(tdrundir)\" \
|
||||
-DTDCONFDIR=\"$(tdconfdir)\" \
|
||||
-I src \
|
||||
- -fpermissive \
|
||||
- -fopenmp \
|
||||
-Wreorder \
|
||||
-Wsign-compare \
|
||||
-Wreturn-type \
|
||||
12
thermald-1.6-rhbz1464548.patch
Normal file
12
thermald-1.6-rhbz1464548.patch
Normal file
@ -0,0 +1,12 @@
|
||||
Index: thermal_daemon-1.6/tools/thermal_monitor/thermaldinterface.cpp
|
||||
===================================================================
|
||||
--- thermal_daemon-1.6.orig/tools/thermal_monitor/thermaldinterface.cpp
|
||||
+++ thermal_daemon-1.6/tools/thermal_monitor/thermaldinterface.cpp
|
||||
@@ -453,6 +453,7 @@ int ThermaldInterface::getZoneInformatio
|
||||
info.name = result.arguments().at(0).toString();
|
||||
info.sensor_count = result.arguments().at(1).toInt();
|
||||
info.trip_count = result.arguments().at(2).toInt();
|
||||
+ info.lowest_valid_index = 0;
|
||||
return 0;
|
||||
} else {
|
||||
qCritical() << "error from" << iface->interface() << result.errorMessage();
|
||||
@ -0,0 +1,243 @@
|
||||
From 7ee77cce542b2ed0421133b01904d5ad0ecdab6f Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Thu, 13 Apr 2017 12:27:53 +0100
|
||||
Subject: [PATCH] thd_parse: check for xmlNodeListGetString NULL returns
|
||||
|
||||
Although it is unlikely, it is possible for xmlNodeListGetString to return
|
||||
NULL, so null check the return and only parse the returned string if it
|
||||
is non-null.
|
||||
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
---
|
||||
src/thd_parse.cpp | 185 ++++++++++++++++++++++++++++--------------------------
|
||||
1 file changed, 95 insertions(+), 90 deletions(-)
|
||||
|
||||
diff --git a/src/thd_parse.cpp b/src/thd_parse.cpp
|
||||
index f5e0870..e96f9d0 100644
|
||||
--- a/src/thd_parse.cpp
|
||||
+++ b/src/thd_parse.cpp
|
||||
@@ -112,20 +112,21 @@ int cthd_parse::parse_new_trip_cdev(xmlNode * a_node, xmlDoc *doc,
|
||||
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
|
||||
tmp_value = (char *) xmlNodeListGetString(doc,
|
||||
cur_node->xmlChildrenNode, 1);
|
||||
- if (!strcasecmp((const char*) cur_node->name, "type")) {
|
||||
- trip_cdev->type.assign((const char*) tmp_value);
|
||||
- string_trim(trip_cdev->type);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name, "influence")) {
|
||||
- trip_cdev->influence = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name,
|
||||
- "SamplingPeriod")) {
|
||||
- trip_cdev->sampling_period = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name,
|
||||
- "TargetState")) {
|
||||
- trip_cdev->target_state = atoi(tmp_value);
|
||||
- }
|
||||
- if (tmp_value)
|
||||
+ if (tmp_value) {
|
||||
+ if (!strcasecmp((const char*) cur_node->name, "type")) {
|
||||
+ trip_cdev->type.assign((const char*) tmp_value);
|
||||
+ string_trim(trip_cdev->type);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name, "influence")) {
|
||||
+ trip_cdev->influence = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name,
|
||||
+ "SamplingPeriod")) {
|
||||
+ trip_cdev->sampling_period = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name,
|
||||
+ "TargetState")) {
|
||||
+ trip_cdev->target_state = atoi(tmp_value);
|
||||
+ }
|
||||
xmlFree(tmp_value);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,15 +224,16 @@ int cthd_parse::parse_pid_values(xmlNode * a_node, xmlDoc *doc,
|
||||
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
|
||||
tmp_value = (char*) xmlNodeListGetString(doc,
|
||||
cur_node->xmlChildrenNode, 1);
|
||||
- if (!strcasecmp((const char*) cur_node->name, "Kp")) {
|
||||
- pid_ptr->Kp = atof(tmp_value);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name, "Kd")) {
|
||||
- pid_ptr->Kd = atof(tmp_value);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name, "Ki")) {
|
||||
- pid_ptr->Ki = atof(tmp_value);
|
||||
- }
|
||||
- if (tmp_value)
|
||||
+ if (tmp_value) {
|
||||
+ if (!strcasecmp((const char*) cur_node->name, "Kp")) {
|
||||
+ pid_ptr->Kp = atof(tmp_value);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name, "Kd")) {
|
||||
+ pid_ptr->Kd = atof(tmp_value);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name, "Ki")) {
|
||||
+ pid_ptr->Ki = atof(tmp_value);
|
||||
+ }
|
||||
xmlFree(tmp_value);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,47 +283,48 @@ int cthd_parse::parse_new_cooling_dev(xmlNode * a_node, xmlDoc *doc,
|
||||
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
|
||||
tmp_value = (char*) xmlNodeListGetString(doc,
|
||||
cur_node->xmlChildrenNode, 1);
|
||||
- if (!strcasecmp((const char *) cur_node->name, "Index")) {
|
||||
- cdev->index = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name, "Type")) {
|
||||
- cdev->type_string.assign((const char*) tmp_value);
|
||||
- string_trim(cdev->type_string);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name, "Path")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_PATH;
|
||||
- cdev->path_str.assign((const char*) tmp_value);
|
||||
- string_trim(cdev->path_str);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name, "MinState")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_MIN_STATE;
|
||||
- cdev->min_state = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name, "MaxState")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_MAX_STATE;
|
||||
- cdev->max_state = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name,
|
||||
- "IncDecStep")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_STEP;
|
||||
- cdev->inc_dec_step = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name, "ReadBack")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_READ_BACK;
|
||||
- cdev->read_back = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name,
|
||||
- "DebouncePeriod")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_DEBOUNCE_VAL;
|
||||
- cdev->debounce_interval = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name,
|
||||
- "PidControl")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_PID_PARAMS;
|
||||
- cdev->pid_enable = true;
|
||||
- parse_pid_values(cur_node->children, doc, &cdev->pid);
|
||||
- } else if (!strcasecmp((const char *) cur_node->name,
|
||||
- "AutoOffMode")) {
|
||||
- cdev->mask |= CDEV_DEF_BIT_AUTO_DOWN;
|
||||
- if (atoi(tmp_value))
|
||||
- cdev->auto_down_control = true;
|
||||
- else
|
||||
- cdev->auto_down_control = false;
|
||||
- }
|
||||
- if (tmp_value)
|
||||
+ if (tmp_value) {
|
||||
+ if (!strcasecmp((const char *) cur_node->name, "Index")) {
|
||||
+ cdev->index = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name, "Type")) {
|
||||
+ cdev->type_string.assign((const char*) tmp_value);
|
||||
+ string_trim(cdev->type_string);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name, "Path")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_PATH;
|
||||
+ cdev->path_str.assign((const char*) tmp_value);
|
||||
+ string_trim(cdev->path_str);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name, "MinState")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_MIN_STATE;
|
||||
+ cdev->min_state = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name, "MaxState")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_MAX_STATE;
|
||||
+ cdev->max_state = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name,
|
||||
+ "IncDecStep")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_STEP;
|
||||
+ cdev->inc_dec_step = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name, "ReadBack")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_READ_BACK;
|
||||
+ cdev->read_back = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name,
|
||||
+ "DebouncePeriod")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_DEBOUNCE_VAL;
|
||||
+ cdev->debounce_interval = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name,
|
||||
+ "PidControl")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_PID_PARAMS;
|
||||
+ cdev->pid_enable = true;
|
||||
+ parse_pid_values(cur_node->children, doc, &cdev->pid);
|
||||
+ } else if (!strcasecmp((const char *) cur_node->name,
|
||||
+ "AutoOffMode")) {
|
||||
+ cdev->mask |= CDEV_DEF_BIT_AUTO_DOWN;
|
||||
+ if (atoi(tmp_value))
|
||||
+ cdev->auto_down_control = true;
|
||||
+ else
|
||||
+ cdev->auto_down_control = false;
|
||||
+ }
|
||||
xmlFree(tmp_value);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -381,17 +384,18 @@ int cthd_parse::parse_new_sensor_link(xmlNode * a_node, xmlDoc *doc,
|
||||
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
|
||||
tmp_value = (char*) xmlNodeListGetString(doc,
|
||||
cur_node->xmlChildrenNode, 1);
|
||||
- if (!strcasecmp((const char*) cur_node->name, "SensorType")) {
|
||||
- info_ptr->name.assign(tmp_value);
|
||||
- string_trim(info_ptr->name);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name,
|
||||
- "Multiplier")) {
|
||||
- info_ptr->multiplier = atof(tmp_value);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name, "Offset")) {
|
||||
- info_ptr->offset = atof(tmp_value);
|
||||
- }
|
||||
- if (tmp_value)
|
||||
+ if (tmp_value) {
|
||||
+ if (!strcasecmp((const char*) cur_node->name, "SensorType")) {
|
||||
+ info_ptr->name.assign(tmp_value);
|
||||
+ string_trim(info_ptr->name);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name,
|
||||
+ "Multiplier")) {
|
||||
+ info_ptr->multiplier = atof(tmp_value);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name, "Offset")) {
|
||||
+ info_ptr->offset = atof(tmp_value);
|
||||
+ }
|
||||
xmlFree(tmp_value);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,26 +412,27 @@ int cthd_parse::parse_new_sensor(xmlNode * a_node, xmlDoc *doc,
|
||||
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
|
||||
tmp_value = (char*) xmlNodeListGetString(doc,
|
||||
cur_node->xmlChildrenNode, 1);
|
||||
- if (!strcasecmp((const char*) cur_node->name, "Type")) {
|
||||
- info_ptr->name.assign(tmp_value);
|
||||
- string_trim(info_ptr->name);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name, "Path")) {
|
||||
- info_ptr->mask |= SENSOR_DEF_BIT_PATH;
|
||||
- info_ptr->path.assign(tmp_value);
|
||||
- string_trim(info_ptr->path);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name,
|
||||
- "AsyncCapable")) {
|
||||
- info_ptr->async_capable = atoi(tmp_value);
|
||||
- info_ptr->mask |= SENSOR_DEF_BIT_ASYNC_CAPABLE;
|
||||
- } else if (!strcasecmp((const char*) cur_node->name, "Virtual")) {
|
||||
- info_ptr->virtual_sensor = atoi(tmp_value);
|
||||
- } else if (!strcasecmp((const char*) cur_node->name,
|
||||
- "SensorLink")) {
|
||||
- parse_new_sensor_link(cur_node->children, doc,
|
||||
- &info_ptr->sensor_link);
|
||||
- }
|
||||
- if (tmp_value)
|
||||
+ if (tmp_value) {
|
||||
+ if (!strcasecmp((const char*) cur_node->name, "Type")) {
|
||||
+ info_ptr->name.assign(tmp_value);
|
||||
+ string_trim(info_ptr->name);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name, "Path")) {
|
||||
+ info_ptr->mask |= SENSOR_DEF_BIT_PATH;
|
||||
+ info_ptr->path.assign(tmp_value);
|
||||
+ string_trim(info_ptr->path);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name,
|
||||
+ "AsyncCapable")) {
|
||||
+ info_ptr->async_capable = atoi(tmp_value);
|
||||
+ info_ptr->mask |= SENSOR_DEF_BIT_ASYNC_CAPABLE;
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name, "Virtual")) {
|
||||
+ info_ptr->virtual_sensor = atoi(tmp_value);
|
||||
+ } else if (!strcasecmp((const char*) cur_node->name,
|
||||
+ "SensorLink")) {
|
||||
+ parse_new_sensor_link(cur_node->children, doc,
|
||||
+ &info_ptr->sensor_link);
|
||||
+ }
|
||||
xmlFree(tmp_value);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
Name: thermald
|
||||
Version: 1.6
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
Summary: Thermal Management daemon
|
||||
|
||||
License: GPLv2+
|
||||
@ -21,6 +21,16 @@ Patch1: %{url}/commit/6a2344b4a55acc0cba356d0f7c521c0cdb6632e0.patch#/%{name}-1
|
||||
Patch2: %{url}/commit/2a00d1745161c6d11b927f025ff1f4bb44f61d15.patch#/%{name}-1.6-load_preference_from_xml_file.patch
|
||||
Patch3: %{url}/commit/37a25879239466f2d096fd1a58b2ac7bbc3958f5.patch#/%{name}-1.6-set_default_preference.patch
|
||||
Patch4: %{url}/commit/35bda2d052b8820cbfce6c1918e3866c6fa3fd76.patch#/%{name}-1.6-update_QCustomPlot_2_0_0_beta.patch
|
||||
Patch5: %{url}/commit/e311dc88d3acac7eca593efea5d95507b02608da.patch#/%{name}-1.6-remove_duplicate_assignment_to_critical_temp.patch
|
||||
Patch6: %{url}/commit/7ee77cce542b2ed0421133b01904d5ad0ecdab6f.patch#/%{name}-1.6-thd_parse_check_for_xmlNodeListGetString_NULL_returns.patch
|
||||
Patch7: %{url}/commit/8f7d49be960dd19edaef452a89b541e4509caef7.patch#/%{name}-1.6-fix_typo_on_field_name_default_prefernce.patch
|
||||
Patch8: %{url}/commit/18989faac5138213a99f63346e49f4279caad9fb.patch#/%{name}-1.6-dont_terminate_the_thermald_engine_if_thd_engine_is_null.patch
|
||||
Patch9: %{url}/commit/90169f80a70efd4d5b6101e87666cd355dbd786f.patch#/%{name}-1.6-removed_compile_flags.patch
|
||||
Patch10: %{url}/commit/9c5d8354dd8efff340a030c05f7beda03061cd0a.patch#/%{name}-1.6-fix_dbus_re-init_accessing_deleted_pointer.patch
|
||||
|
||||
# See: https://bugzilla.redhat.com/show_bug.cgi?id=1464548
|
||||
# https://github.com/intel/thermal_daemon/issues/132
|
||||
Patch1000: %{name}-1.6-rhbz1464548.patch
|
||||
|
||||
# No cpuid.h on other arches.
|
||||
ExclusiveArch: %{ix86} x86_64
|
||||
@ -265,6 +275,10 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Jun 30 2017 Björn Esser <besser82@fedoraproject.org> - 1.6-4
|
||||
- Add upstream patch to fix ThermalMonitor (rhbz#1464548)
|
||||
- Add several fixes from upstream
|
||||
|
||||
* Tue Apr 11 2017 Björn Esser <besser82@fedoraproject.org> - 1.6-3
|
||||
- Explicitly turn on hardening, if required
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user