Permalink
Browse files

retain meter state when it is reinit'ed in the Setup screen

git-svn-id: https://htop.svn.sourceforge.net/svnroot/htop/trunk@221 63cc0a6c-1f0e-0410-841e-f6a342073da8
  • Loading branch information...
1 parent a330666 commit 9f50516202d11ec4ff6dfce3754591477893a3f4 loderunner committed Mar 31, 2011
Showing with 10 additions and 6 deletions.
  1. +8 −5 CPUMeter.c
  2. +2 −1 Meter.c
View
13 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) {
View
3 Meter.c
@@ -155,8 +155,9 @@ Meter* Meter_new(ProcessList* pl, int param, MeterType* type) {
}
void Meter_delete(Object* cast) {
+ if (!cast)
+ return;
Meter* this = (Meter*) cast;
- assert (this != NULL);
if (this->type->done) {
this->type->done(this);
}

0 comments on commit 9f50516

Please sign in to comment.