diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/charts.c | 12 | ||||
-rw-r--r-- | src/vcr.c | 8 |
2 files changed, 10 insertions, 10 deletions
diff --git a/src/charts.c b/src/charts.c index 489c2c3..fb45b5f 100644 --- a/src/charts.c +++ b/src/charts.c @@ -417,8 +417,8 @@ static void draw_bars(vwm_charts_t *charts, vwm_chart_t *chart, int row, float m /* ensure at least 1 pixel when the scaled result is a fraction less than 1, * I want to at least see 1 pixel blips for the slightest cpu utilization */ - vcr_draw_bar(chart->vcr, a_layer, row, a_t, a_fraction > 0 ? 1 : 0 /* min_height */); - vcr_draw_bar(chart->vcr, b_layer, row, b_t, b_fraction > 0 ? 1 : 0 /* min_height */); + vcr_draw_bar(chart->vcr, a_layer, row, a_t, a_fraction != 0 ? 1 : 0 /* min_height */); + vcr_draw_bar(chart->vcr, b_layer, row, b_t, b_fraction != 0 ? 1 : 0 /* min_height */); } @@ -1069,7 +1069,7 @@ static void draw_chart_rest(vwm_charts_t *charts, vwm_chart_t *chart, vmon_proc_ draw_bars(charts, chart, *row, (proc->is_thread || !proc->is_threaded) ? charts->vmon.num_cpus : 1.f /* mult */, - stime_delta, + -stime_delta, charts->inv_total_delta, VCR_LAYER_GRAPHA, utime_delta, @@ -1111,7 +1111,7 @@ static void draw_chart(vwm_charts_t *charts, vwm_chart_t *chart, vmon_proc_t *pr /* IOWait and Idle % @ row 0 */ draw_bars(charts, chart, row, 1.f /* mult */, - charts->iowait_delta, + -charts->iowait_delta, charts->inv_total_delta, VCR_LAYER_GRAPHA, charts->idle_delta, @@ -1121,7 +1121,7 @@ static void draw_chart(vwm_charts_t *charts, vwm_chart_t *chart, vmon_proc_t *pr /* IRQ and SoftIRQ % @ row 1 */ draw_bars(charts, chart, row + 1, 1.f /* mult */, - charts->irq_delta, + -charts->irq_delta, charts->inv_total_delta, VCR_LAYER_GRAPHA, charts->softirq_delta, @@ -1131,7 +1131,7 @@ static void draw_chart(vwm_charts_t *charts, vwm_chart_t *chart, vmon_proc_t *pr /* "Adherence" @ row 2 */ draw_bars(charts, chart, row + 2, 1.f /* mult */, - charts->this_sample_adherence > 0.f ? charts->this_sample_adherence : 0.f /* a_fraction */, + charts->this_sample_adherence > 0.f ? -charts->this_sample_adherence : 0.f /* a_fraction */, 1.f /* inv_a_total */, VCR_LAYER_GRAPHA, charts->this_sample_adherence < 0.f ? -charts->this_sample_adherence : 0.f /* b_fraction */, @@ -1221,6 +1221,10 @@ void vcr_draw_bar(vcr_t *vcr, vcr_layer_t layer, int row, float t, int min_heigh if (height > (VCR_ROW_HEIGHT - 1)) height = (VCR_ROW_HEIGHT - 1); + /* negative values project down from the top, positive up from bottom */ + if (t > 0.f) + y += VCR_ROW_HEIGHT - height - 1; + switch (vcr->backend->type) { #ifdef USE_XLIB case VCR_BACKEND_TYPE_XLIB: { @@ -1233,7 +1237,6 @@ void vcr_draw_bar(vcr_t *vcr, vcr_layer_t layer, int row, float t, int min_heigh break; case VCR_LAYER_GRAPHB: dest = &vcr->xlib.graphb_picture; - y += VCR_ROW_HEIGHT - height - 1; break; default: assert(0); @@ -1253,9 +1256,6 @@ void vcr_draw_bar(vcr_t *vcr, vcr_layer_t layer, int row, float t, int min_heigh uint8_t mask = (0x1 << layer) << ((vcr->phase & 0x1) << 2); uint8_t *p; - if (layer == VCR_LAYER_GRAPHB) - y += VCR_ROW_HEIGHT - height - 1; - p = &vcr->mem.bits[y * vcr->mem.pitch + (vcr->phase >> 1)]; for (int i = 0; i < height; i++, p += vcr->mem.pitch) *p |= mask; |