From faaf6dd25e064f4e6e73061b15547b965b353ae5 Mon Sep 17 00:00:00 2001 From: Explorer09 Date: Thu, 18 Apr 2024 21:08:54 +0800 Subject: Obsolete the CUSTOM_METERMODE use in default mode The use of CUSTOM_METERMODE value in meter default mode was a bad design. There are no meter that really has a "custom" mode to work with and currently that value serves as a useless placeholder that hides the real default mode for a meter. Replace CUSTOM_METERMODE in `defaultMode` of all meters with the real intended default modes. Currently only CPU meters and MemorySwapMeter used this, and their real defaults are BAR_METERMODE. In Meter_setMode(), remove the special treatment of `defaultMode == CUSTOM_METERMODE`, Meter_setMode() still calls the `updateMode` function for custom treatment when it's present for a meter class. As CUSTOM_METERMODE is obsolete from `defaultMode`, the init functions of CPU meters and MemorySwapMeter need to be adjusted to avoid incomplete initialization (Meter.draw function bring NULL). Signed-off-by: Kang-Che Sung --- CPUMeter.c | 28 +++++++++++++++------------- MemorySwapMeter.c | 6 ++++-- Meter.c | 7 +++---- Meter.h | 1 - 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/CPUMeter.c b/CPUMeter.c index afcddeb1..93cf099e 100644 --- a/CPUMeter.c +++ b/CPUMeter.c @@ -251,8 +251,10 @@ static void CPUMeterCommonInit(Meter* this, int ncol) { Meter_init(meters[i]); } - if (this->mode == 0) + if (this->mode == 0) { this->mode = BAR_METERMODE; + this->draw = Meter_drawFn(this); + } int h = Meter_modes[this->mode]->h; this->h = h * ((count + ncol - 1) / ncol); @@ -380,7 +382,7 @@ const MeterClass AllCPUsMeter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .total = 100.0, .attributes = CPUMeter_attributes, .name = "AllCPUs", @@ -400,7 +402,7 @@ const MeterClass AllCPUs2Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -421,7 +423,7 @@ const MeterClass LeftCPUsMeter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -442,7 +444,7 @@ const MeterClass RightCPUsMeter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -463,7 +465,7 @@ const MeterClass LeftCPUs2Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -484,7 +486,7 @@ const MeterClass RightCPUs2Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -505,7 +507,7 @@ const MeterClass AllCPUs4Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -526,7 +528,7 @@ const MeterClass LeftCPUs4Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -547,7 +549,7 @@ const MeterClass RightCPUs4Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -568,7 +570,7 @@ const MeterClass AllCPUs8Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -589,7 +591,7 @@ const MeterClass LeftCPUs8Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, @@ -610,7 +612,7 @@ const MeterClass RightCPUs8Meter_class = { .display = CPUMeter_display }, .updateValues = AllCPUsMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .total = 100.0, .attributes = CPUMeter_attributes, diff --git a/MemorySwapMeter.c b/MemorySwapMeter.c index 82eddee2..6aea784f 100644 --- a/MemorySwapMeter.c +++ b/MemorySwapMeter.c @@ -65,8 +65,10 @@ static void MemorySwapMeter_init(Meter* this) { if (Meter_initFn(data->swapMeter)) Meter_init(data->swapMeter); - if (this->mode == 0) + if (this->mode == 0) { this->mode = BAR_METERMODE; + this->draw = Meter_drawFn(this); + } this->h = MAXIMUM(Meter_modes[data->memoryMeter->mode]->h, Meter_modes[data->swapMeter->mode]->h); } @@ -97,7 +99,7 @@ const MeterClass MemorySwapMeter_class = { .delete = Meter_delete, }, .updateValues = MemorySwapMeter_updateValues, - .defaultMode = CUSTOM_METERMODE, + .defaultMode = BAR_METERMODE, .isMultiColumn = true, .name = "MemorySwap", .uiName = "Memory & Swap", diff --git a/Meter.c b/Meter.c index 938b907b..1fc7e9db 100644 --- a/Meter.c +++ b/Meter.c @@ -122,11 +122,10 @@ void Meter_setMode(Meter* this, int modeIndex) { } assert(modeIndex < LAST_METERMODE); - if (Meter_defaultMode(this) == CUSTOM_METERMODE) { + if (Meter_updateModeFn(this)) { + assert(Meter_drawFn(this)); this->draw = Meter_drawFn(this); - if (Meter_updateModeFn(this)) { - Meter_updateMode(this, modeIndex); - } + Meter_updateMode(this, modeIndex); } else { assert(modeIndex >= 1); free(this->drawData.values); diff --git a/Meter.h b/Meter.h index 17d77f3e..ce474da0 100644 --- a/Meter.h +++ b/Meter.h @@ -87,7 +87,6 @@ typedef struct MeterClass_ { #define Meter_getUiName(this_,n_,l_) As_Meter(this_)->getUiName((const Meter*)(this_),n_,l_) #define Meter_getCaptionFn(this_) As_Meter(this_)->getCaption #define Meter_getCaption(this_) (Meter_getCaptionFn(this_) ? As_Meter(this_)->getCaption((const Meter*)(this_)) : (this_)->caption) -#define Meter_defaultMode(this_) As_Meter(this_)->defaultMode #define Meter_attributes(this_) As_Meter(this_)->attributes #define Meter_name(this_) As_Meter(this_)->name #define Meter_uiName(this_) As_Meter(this_)->uiName -- cgit v1.2.3