summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2021-02-08 16:38:49 +0100
committerBenBE <BenBE@geshi.org>2021-03-04 23:57:45 +0100
commitb862e36ee7ce8954b120eab4fc895c9dc7c7f3db (patch)
tree8c1e69dc1f821c05c3f3b172ebe1a82ce4a83845
parent2d1042adb382aa95456beff31b40abb7196567a0 (diff)
Separate data-update and drawing of header
-rw-r--r--AvailableMetersPanel.c1
-rw-r--r--CPUMeter.c21
-rw-r--r--DisplayOptionsPanel.c1
-rw-r--r--Header.c11
-rw-r--r--Header.h2
-rw-r--r--Meter.c8
-rw-r--r--ScreenManager.c2
7 files changed, 38 insertions, 8 deletions
diff --git a/AvailableMetersPanel.c b/AvailableMetersPanel.c
index 0e16147d..5e5af67c 100644
--- a/AvailableMetersPanel.c
+++ b/AvailableMetersPanel.c
@@ -76,6 +76,7 @@ static HandlerResult AvailableMetersPanel_eventHandler(Panel* super, int ch) {
if (update) {
this->settings->changed = true;
Header_calculateHeight(header);
+ Header_updateData(header);
Header_draw(header);
ScreenManager_resize(this->scr, this->scr->x1, header->height, this->scr->x2, this->scr->y2);
}
diff --git a/CPUMeter.c b/CPUMeter.c
index ad98dcdc..99f19df1 100644
--- a/CPUMeter.c
+++ b/CPUMeter.c
@@ -187,6 +187,15 @@ static void AllCPUsMeter_getRange(const Meter* this, int* start, int* count) {
}
}
+static void AllCPUsMeter_updateValues(Meter* this) {
+ CPUMeterData* data = this->meterData;
+ Meter** meters = data->meters;
+ int start, count;
+ AllCPUsMeter_getRange(this, &start, &count);
+ for (int i = 0; i < count; i++)
+ Meter_updateValues(meters[i]);
+}
+
static void CPUMeterCommonInit(Meter* this, int ncol) {
int cpus = this->pl->cpuCount;
CPUMeterData* data = this->meterData;
@@ -332,6 +341,7 @@ const MeterClass AllCPUsMeter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -351,6 +361,7 @@ const MeterClass AllCPUs2Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -370,6 +381,7 @@ const MeterClass LeftCPUsMeter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -389,6 +401,7 @@ const MeterClass RightCPUsMeter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -408,6 +421,7 @@ const MeterClass LeftCPUs2Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -427,6 +441,7 @@ const MeterClass RightCPUs2Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -446,6 +461,7 @@ const MeterClass AllCPUs4Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -465,6 +481,7 @@ const MeterClass LeftCPUs4Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -484,6 +501,7 @@ const MeterClass RightCPUs4Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -503,6 +521,7 @@ const MeterClass AllCPUs8Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -522,6 +541,7 @@ const MeterClass LeftCPUs8Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
@@ -541,6 +561,7 @@ const MeterClass RightCPUs8Meter_class = {
.delete = Meter_delete,
.display = CPUMeter_display
},
+ .updateValues = AllCPUsMeter_updateValues,
.defaultMode = CUSTOM_METERMODE,
.total = 100.0,
.attributes = CPUMeter_attributes,
diff --git a/DisplayOptionsPanel.c b/DisplayOptionsPanel.c
index 62bee9be..c6228b70 100644
--- a/DisplayOptionsPanel.c
+++ b/DisplayOptionsPanel.c
@@ -72,6 +72,7 @@ static HandlerResult DisplayOptionsPanel_eventHandler(Panel* super, int ch) {
Header* header = this->scr->header;
Header_calculateHeight(header);
Header_reinit(header);
+ Header_updateData(header);
Header_draw(header);
ScreenManager_resize(this->scr, this->scr->x1, header->height, this->scr->x2, this->scr->y2);
}
diff --git a/Header.c b/Header.c
index 39afede0..85b0c281 100644
--- a/Header.c
+++ b/Header.c
@@ -177,6 +177,17 @@ void Header_draw(const Header* this) {
}
}
+void Header_updateData(Header* this) {
+ Header_forEachColumn(this, col) {
+ Vector* meters = this->columns[col];
+ int items = Vector_size(meters);
+ for (int i = 0; i < items; i++) {
+ Meter* meter = (Meter*) Vector_get(meters, i);
+ Meter_updateValues(meter);
+ }
+ }
+}
+
/*
* Calculate how many columns the current meter is allowed to span,
* by counting how many columns to the right are empty or contain a BlankMeter.
diff --git a/Header.h b/Header.h
index 11283c74..02131f1f 100644
--- a/Header.h
+++ b/Header.h
@@ -45,6 +45,8 @@ void Header_reinit(Header* this);
void Header_draw(const Header* this);
+void Header_updateData(Header* this);
+
int Header_calculateHeight(Header* this);
#endif
diff --git a/Meter.c b/Meter.c
index 1099a0bc..3173a47c 100644
--- a/Meter.c
+++ b/Meter.c
@@ -154,8 +154,6 @@ ListItem* Meter_toListItem(const Meter* this, bool moving) {
/* ---------- TextMeterMode ---------- */
static void TextMeterMode_draw(Meter* this, int x, int y, ATTR_UNUSED int w) {
- Meter_updateValues(this);
-
attrset(CRT_colors[METER_TEXT]);
mvaddnstr(y, x, this->caption, w - 1);
attrset(CRT_colors[RESET_COLOR]);
@@ -177,8 +175,6 @@ static void TextMeterMode_draw(Meter* this, int x, int y, ATTR_UNUSED int w) {
static const char BarMeterMode_characters[] = "|#*@$%&.";
static void BarMeterMode_draw(Meter* this, int x, int y, int w) {
- Meter_updateValues(this);
-
w -= 2;
attrset(CRT_colors[METER_TEXT]);
int captionLen = 3;
@@ -326,8 +322,6 @@ static void GraphMeterMode_draw(Meter* this, int x, int y, int w) {
for (int i = 0; i < nValues - 1; i++)
data->values[i] = data->values[i + 1];
- Meter_updateValues(this);
-
double value = 0.0;
for (uint8_t i = 0; i < this->curItems; i++)
value += this->values[i];
@@ -394,8 +388,6 @@ static void LEDMeterMode_draw(Meter* this, int x, int y, int w) {
#endif
LEDMeterMode_digits = LEDMeterMode_digitsAscii;
- Meter_updateValues(this);
-
RichString_begin(out);
Meter_displayBuffer(this, &out);
diff --git a/ScreenManager.c b/ScreenManager.c
index af9592c2..c4fbfeee 100644
--- a/ScreenManager.c
+++ b/ScreenManager.c
@@ -105,6 +105,8 @@ static void checkRecalculation(ScreenManager* this, double* oldTime, int* sortTi
if (*rescan) {
*oldTime = newTime;
+ // always update header, especially to avoid gaps in graph meters
+ Header_updateData(this->header);
ProcessList_scan(pl, this->state->pauseProcessUpdate);
if (!this->state->pauseProcessUpdate && (*sortTimeout == 0 || this->settings->treeView)) {
ProcessList_sort(pl);

© 2014-2024 Faster IT GmbH | imprint | privacy policy