mirror of https://github.com/xzeldon/htop.git
Merge branch 'hishamhm-pull-1012'
This commit is contained in:
commit
31391b206c
93
CPUMeter.c
93
CPUMeter.c
|
@ -161,6 +161,15 @@ static void AllCPUsMeter_getRange(Meter* this, int* start, int* count) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int MapClassnameToColumncount(Meter* this){
|
||||||
|
if (strchr(Meter_name(this), '4'))
|
||||||
|
return 4;
|
||||||
|
else if (strchr(Meter_name(this), '2'))
|
||||||
|
return 2;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void AllCPUsMeter_init(Meter* this) {
|
static void AllCPUsMeter_init(Meter* this) {
|
||||||
int cpus = this->pl->cpuCount;
|
int cpus = this->pl->cpuCount;
|
||||||
if (!this->drawData)
|
if (!this->drawData)
|
||||||
|
@ -176,10 +185,8 @@ static void AllCPUsMeter_init(Meter* this) {
|
||||||
if (this->mode == 0)
|
if (this->mode == 0)
|
||||||
this->mode = BAR_METERMODE;
|
this->mode = BAR_METERMODE;
|
||||||
int h = Meter_modes[this->mode]->h;
|
int h = Meter_modes[this->mode]->h;
|
||||||
if (strchr(Meter_name(this), '2'))
|
int ncol = MapClassnameToColumncount(this);
|
||||||
this->h = h * ((count+1) / 2);
|
this->h = h * ((count + ncol - 1)/ ncol);
|
||||||
else
|
|
||||||
this->h = h * count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AllCPUsMeter_done(Meter* this) {
|
static void AllCPUsMeter_done(Meter* this) {
|
||||||
|
@ -199,10 +206,8 @@ static void AllCPUsMeter_updateMode(Meter* this, int mode) {
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
Meter_setMode(meters[i], mode);
|
Meter_setMode(meters[i], mode);
|
||||||
}
|
}
|
||||||
if (strchr(Meter_name(this), '2'))
|
int ncol = MapClassnameToColumncount(this);
|
||||||
this->h = h * ((count+1) / 2);
|
this->h = h * ((count + ncol - 1)/ ncol);
|
||||||
else
|
|
||||||
this->h = h * count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DualColCPUsMeter_draw(Meter* this, int x, int y, int w) {
|
static void DualColCPUsMeter_draw(Meter* this, int x, int y, int w) {
|
||||||
|
@ -233,6 +238,22 @@ static void SingleColCPUsMeter_draw(Meter* this, int x, int y, int w) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void MultiColCPUsMeter_draw(Meter* this, int x, int y, int w){
|
||||||
|
Meter** meters = (Meter**) this->drawData;
|
||||||
|
int start, count;
|
||||||
|
AllCPUsMeter_getRange(this, &start, &count);
|
||||||
|
int ncol = MapClassnameToColumncount(this);
|
||||||
|
int colwidth = (w-ncol)/ncol + 1;
|
||||||
|
int diff = (w - (colwidth * ncol));
|
||||||
|
int nrows = (count + ncol - 1) / ncol;
|
||||||
|
for (int i = 0; i < count; i++){
|
||||||
|
int d = (i/nrows) > diff ? diff : (i / nrows) ; // dynamic spacer
|
||||||
|
int xpos = x + ((i / nrows) * colwidth) + d;
|
||||||
|
int ypos = y + ((i % nrows) * meters[0]->h);
|
||||||
|
meters[i]->draw(meters[i], xpos, ypos, colwidth);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MeterClass CPUMeter_class = {
|
MeterClass CPUMeter_class = {
|
||||||
.super = {
|
.super = {
|
||||||
.extends = Class(Meter),
|
.extends = Class(Meter),
|
||||||
|
@ -364,3 +385,59 @@ MeterClass RightCPUs2Meter_class = {
|
||||||
.done = AllCPUsMeter_done
|
.done = AllCPUsMeter_done
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MeterClass AllCPUs4Meter_class = {
|
||||||
|
.super = {
|
||||||
|
.extends = Class(Meter),
|
||||||
|
.delete = Meter_delete,
|
||||||
|
.display = CPUMeter_display
|
||||||
|
},
|
||||||
|
.defaultMode = CUSTOM_METERMODE,
|
||||||
|
.total = 100.0,
|
||||||
|
.attributes = CPUMeter_attributes,
|
||||||
|
.name = "AllCPUs4",
|
||||||
|
.uiName = "CPUs (1&2&3&4/4)",
|
||||||
|
.description = "CPUs (1&2&3&4/4): all CPUs in 4 shorter columns",
|
||||||
|
.caption = "CPU",
|
||||||
|
.draw = MultiColCPUsMeter_draw,
|
||||||
|
.init = AllCPUsMeter_init,
|
||||||
|
.updateMode = AllCPUsMeter_updateMode,
|
||||||
|
.done = AllCPUsMeter_done
|
||||||
|
};
|
||||||
|
|
||||||
|
MeterClass LeftCPUs4Meter_class = {
|
||||||
|
.super = {
|
||||||
|
.extends = Class(Meter),
|
||||||
|
.delete = Meter_delete,
|
||||||
|
.display = CPUMeter_display
|
||||||
|
},
|
||||||
|
.defaultMode = CUSTOM_METERMODE,
|
||||||
|
.total = 100.0,
|
||||||
|
.attributes = CPUMeter_attributes,
|
||||||
|
.name = "LeftCPUs4",
|
||||||
|
.uiName = "CPUs (1-4/8)",
|
||||||
|
.description = "CPUs (1-4/8): first half in 4 shorter columns",
|
||||||
|
.caption = "CPU",
|
||||||
|
.draw = MultiColCPUsMeter_draw,
|
||||||
|
.init = AllCPUsMeter_init,
|
||||||
|
.updateMode = AllCPUsMeter_updateMode,
|
||||||
|
.done = AllCPUsMeter_done
|
||||||
|
};
|
||||||
|
|
||||||
|
MeterClass RightCPUs4Meter_class = {
|
||||||
|
.super = {
|
||||||
|
.extends = Class(Meter),
|
||||||
|
.delete = Meter_delete,
|
||||||
|
.display = CPUMeter_display
|
||||||
|
},
|
||||||
|
.defaultMode = CUSTOM_METERMODE,
|
||||||
|
.total = 100.0,
|
||||||
|
.attributes = CPUMeter_attributes,
|
||||||
|
.name = "RightCPUs4",
|
||||||
|
.uiName = "CPUs (5-8/8)",
|
||||||
|
.description = "CPUs (5-8/8): second half in 4 shorter columns",
|
||||||
|
.caption = "CPU",
|
||||||
|
.draw = MultiColCPUsMeter_draw,
|
||||||
|
.init = AllCPUsMeter_init,
|
||||||
|
.updateMode = AllCPUsMeter_updateMode,
|
||||||
|
.done = AllCPUsMeter_done
|
||||||
|
};
|
||||||
|
|
|
@ -48,5 +48,10 @@ extern MeterClass LeftCPUs2Meter_class;
|
||||||
|
|
||||||
extern MeterClass RightCPUs2Meter_class;
|
extern MeterClass RightCPUs2Meter_class;
|
||||||
|
|
||||||
|
extern MeterClass AllCPUs4Meter_class;
|
||||||
|
|
||||||
|
extern MeterClass LeftCPUs4Meter_class;
|
||||||
|
|
||||||
|
extern MeterClass RightCPUs4Meter_class;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -122,10 +122,13 @@ MeterClass* Platform_meterTypes[] = {
|
||||||
&HostnameMeter_class,
|
&HostnameMeter_class,
|
||||||
&AllCPUsMeter_class,
|
&AllCPUsMeter_class,
|
||||||
&AllCPUs2Meter_class,
|
&AllCPUs2Meter_class,
|
||||||
|
&AllCPUs4Meter_class,
|
||||||
&LeftCPUsMeter_class,
|
&LeftCPUsMeter_class,
|
||||||
&RightCPUsMeter_class,
|
&RightCPUsMeter_class,
|
||||||
&LeftCPUs2Meter_class,
|
&LeftCPUs2Meter_class,
|
||||||
&RightCPUs2Meter_class,
|
&RightCPUs2Meter_class,
|
||||||
|
&LeftCPUs4Meter_class,
|
||||||
|
&RightCPUs4Meter_class,
|
||||||
&BlankMeter_class,
|
&BlankMeter_class,
|
||||||
&PressureStallCPUSomeMeter_class,
|
&PressureStallCPUSomeMeter_class,
|
||||||
&PressureStallIOSomeMeter_class,
|
&PressureStallIOSomeMeter_class,
|
||||||
|
|
Loading…
Reference in New Issue