diff --git a/Meter.c b/Meter.c index 4d1ae282ca839268dfdd900d1a29aa34d35e0b16..3a8f195daa90e28b4853c854727384edda657a2e 100644 --- a/Meter.c +++ b/Meter.c @@ -70,6 +70,7 @@ typedef struct MeterClass_ { #define Meter_defaultMode(this_) As_Meter(this_)->defaultMode #define Meter_getItems(this_) As_Meter(this_)->curItems #define Meter_setItems(this_, n_) As_Meter(this_)->curItems = (n_) +#define Meter_getMaxItems(this_) As_Meter(this_)->maxItems #define Meter_attributes(this_) As_Meter(this_)->attributes #define Meter_name(this_) As_Meter(this_)->name #define Meter_uiName(this_) As_Meter(this_)->uiName @@ -372,6 +373,10 @@ static void GraphMeterMode_draw(Meter* this, int x, int y, int w) { if (!this->drawData) { this->drawData = calloc(1, sizeof(GraphData)); GraphData* data = (GraphData*) this->drawData; + if (!data->prevItemSums) + data->prevItemSums = calloc(Meter_getMaxItems(this), sizeof(*data->prevItemSums)); + if (!data->currentItemSums) + data->currentItemSums = calloc(Meter_getMaxItems(this), sizeof(*data->currentItemSums)); for (int i = 0; i < nValues; i++) { for (int line = 0; line < GRAPH_HEIGHT; line++) { data->colors[i][line] = BAR_SHADOW; @@ -413,12 +418,6 @@ static void GraphMeterMode_draw(Meter* this, int x, int y, int w) { int items = Meter_getItems(this); - if (!data->prevItemSums) { - data->prevItemSums = calloc(items, sizeof(*data->prevItemSums)); - } - if (!data->currentItemSums) { - data->currentItemSums = calloc(items, sizeof(*data->currentItemSums)); - } double *prevItemSums = data->prevItemSums; double *currentItemSums = data->currentItemSums; diff --git a/Meter.h b/Meter.h index 1e8bdf569f7b932dabb8604ec1da0cb309aeb876..b76d4b075e1fe6448c362cbde2f26018780c4f3d 100644 --- a/Meter.h +++ b/Meter.h @@ -57,6 +57,7 @@ typedef struct MeterClass_ { #define Meter_defaultMode(this_) As_Meter(this_)->defaultMode #define Meter_getItems(this_) As_Meter(this_)->curItems #define Meter_setItems(this_, n_) As_Meter(this_)->curItems = (n_) +#define Meter_getMaxItems(this_) As_Meter(this_)->maxItems #define Meter_attributes(this_) As_Meter(this_)->attributes #define Meter_name(this_) As_Meter(this_)->name #define Meter_uiName(this_) As_Meter(this_)->uiName