From eaf11cc12a1aa4b050a8a1e7ea3770d3d9c81e95 Mon Sep 17 00:00:00 2001 From: Daniel Lange Date: Mon, 11 Apr 2016 13:00:29 +0200 Subject: Imported Upstream version 1.0 --- Header.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'Header.c') diff --git a/Header.c b/Header.c index 998e9c6..9a14b15 100644 --- a/Header.c +++ b/Header.c @@ -1,6 +1,6 @@ /* htop - Header.c -(C) 2004-2010 Hisham H. Muhammad +(C) 2004-2011 Hisham H. Muhammad Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -10,6 +10,7 @@ in the source distribution for its full text. #include "debug.h" #include +#include /*{ @@ -34,7 +35,7 @@ typedef struct Header_ { #endif Header* Header_new(ProcessList* pl) { - Header* this = malloc(sizeof(Header)); + Header* this = calloc(sizeof(Header), 1); this->leftMeters = Vector_new(METER_CLASS, true, DEFAULT_SIZE, NULL); this->rightMeters = Vector_new(METER_CLASS, true, DEFAULT_SIZE, NULL); this->margin = true; @@ -123,8 +124,16 @@ MeterModeId Header_readMeterMode(Header* this, int i, HeaderSide side) { return meter->mode; } -void Header_defaultMeters(Header* this) { - Vector_add(this->leftMeters, Meter_new(this->pl, 0, &AllCPUsMeter)); +void Header_defaultMeters(Header* this, int cpuCount) { + if (cpuCount > 8) { + Vector_add(this->leftMeters, Meter_new(this->pl, 0, &LeftCPUs2Meter)); + Vector_add(this->rightMeters, Meter_new(this->pl, 0, &RightCPUs2Meter)); + } else if (cpuCount > 4) { + Vector_add(this->leftMeters, Meter_new(this->pl, 0, &LeftCPUsMeter)); + Vector_add(this->rightMeters, Meter_new(this->pl, 0, &RightCPUsMeter)); + } else { + Vector_add(this->leftMeters, Meter_new(this->pl, 0, &AllCPUsMeter)); + } Vector_add(this->leftMeters, Meter_new(this->pl, 0, &MemoryMeter)); Vector_add(this->leftMeters, Meter_new(this->pl, 0, &SwapMeter)); Vector_add(this->rightMeters, Meter_new(this->pl, 0, &TasksMeter)); @@ -132,7 +141,20 @@ void Header_defaultMeters(Header* this) { Vector_add(this->rightMeters, Meter_new(this->pl, 0, &UptimeMeter)); } -void Header_draw(Header* this) { +void Header_reinit(Header* this) { + for (int i = 0; i < Vector_size(this->leftMeters); i++) { + Meter* meter = (Meter*) Vector_get(this->leftMeters, i); + if (meter->type->init) + meter->type->init(meter); + } + for (int i = 0; i < Vector_size(this->rightMeters); i++) { + Meter* meter = (Meter*) Vector_get(this->rightMeters, i); + if (meter->type->init) + meter->type->init(meter); + } +} + +void Header_draw(const Header* this) { int height = this->height; int pad = this->pad; -- cgit v1.2.3