summaryrefslogtreecommitdiffstats
path: root/CPUMeter.c
diff options
context:
space:
mode:
Diffstat (limited to 'CPUMeter.c')
-rw-r--r--CPUMeter.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/CPUMeter.c b/CPUMeter.c
index b6f8d35e..7c90bb6d 100644
--- a/CPUMeter.c
+++ b/CPUMeter.c
@@ -124,12 +124,15 @@ static void CPUMeter_display(Object* cast, RichString* out) {
static void AllCPUsMeter_init(Meter* this) {
int cpus = this->pl->cpuCount;
- this->drawData = malloc(sizeof(Meter*) * cpus);
+ if (!this->drawData)
+ this->drawData = calloc(sizeof(Meter*), cpus);
Meter** meters = (Meter**) this->drawData;
- for (int i = 0; i < cpus; i++)
- meters[i] = Meter_new(this->pl, i+1, &CPUMeter);
- this->h = cpus;
- this->mode = BAR_METERMODE;
+ for (int i = 0; i < cpus; i++) {
+ if (!meters[i])
+ meters[i] = Meter_new(this->pl, i+1, &CPUMeter);
+ meters[i]->type->init(meters[i]);
+ }
+ this->h = Meter_modes[this->mode]->h;
}
static void AllCPUsMeter_done(Meter* this) {