1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-16 03:24:07 +00:00
freebsd-ports/sysutils/xperfmon3/files/patch-aa
Lars Koeller f5c1a46665 Update to Version 3.1 this includes several bugfixes:
o Fix compiler -Wall warnings
 o Calc etime correct for multi CPU machines
 o Show disk stats for "ad" disk devices, too
 o Count number of network in/out packets correctly
 o Get free swapspace only every 10 time intervals to
   limit CPU usage.
2001-04-10 20:43:11 +00:00

805 lines
26 KiB
Plaintext

*** ../xperfmon++/StripChart.c Wed Jul 27 22:29:30 1994
--- ./StripChart.c Tue Apr 10 21:49:59 2001
***************
*** 1,4 ****
! /* $XConsortium: StripChart.c,v 1.20 91/05/24 17:20:42 converse Exp $ */
/***********************************************************
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
--- 1,9 ----
! /*
! * Enhancement and error correction for FreeBSD-3.X
! * COPYRIGHT 1998 by Lars Köller <Lars.Koeller@Uni-Bielefeld.de>
! *
! * $Id: StripChart.c,v 3.9 2001/04/10 19:49:34 lkoeller Exp lkoeller $
! */
/***********************************************************
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
***************
*** 6,18 ****
All Rights Reserved
! Permission to use, copy, modify, and distribute this software and its
! documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
! both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Digital or MIT not be
used in advertising or publicity pertaining to distribution of the
! software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
--- 11,23 ----
All Rights Reserved
! Permission to use, copy, modify, and distribute this software and its
! documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
! both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Digital or MIT not be
used in advertising or publicity pertaining to distribution of the
! software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
***************
*** 28,34 ****
* documentation for any purpose and without fee is hereby granted, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
! * documentation, and that the name of NASA and Sterling Software (collectively
* or individually) are not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. NASA and Sterling Software makes no representations about the
--- 33,39 ----
* documentation for any purpose and without fee is hereby granted, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
! * documentation, and that the name of NASA and Sterling Software (collectively
* or individually) are not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. NASA and Sterling Software makes no representations about the
***************
*** 39,45 ****
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NASA & STERLING SOFTWARE
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
! * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* 1994 Revision
--- 44,50 ----
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NASA & STERLING SOFTWARE
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
! * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* 1994 Revision
***************
*** 48,58 ****
--- 53,71 ----
******************************************************************/
+ #ifndef LINT
+ static char rcsid[] = "$Id: StripChart.c,v 3.9 2001/04/10 19:49:34 lkoeller Exp lkoeller $";
+ #endif
+
+ #include "fbsd_vers.h"
+
#include <stdio.h>
#include <X11/IntrinsicP.h>
#include <X11/StringDefs.h>
#include <X11/Xaw/XawInit.h>
#include "StripCharP.h"
+
+ #include "system.h"
#include <X11/Xfuncs.h>
#define MS_PER_SEC 100
***************
*** 109,114 ****
--- 122,128 ----
#undef offset
#define LABEL_ROOM 100
+
static void Initialize(), Destroy(), Redisplay(), MoveChart(), SetPoints();
static Boolean SetValues();
static int repaint_window();
***************
*** 204,213 ****
PerfChartWidget w;
unsigned int which;
{
! if (which & FOREGROUND)
XtReleaseGC((Widget) w, w->strip_chart.fgGC);
! if (which & HIGHLIGHT)
XtReleaseGC((Widget) w, w->strip_chart.hiGC);
}
--- 218,227 ----
PerfChartWidget w;
unsigned int which;
{
! if (which & FOREGROUND)
XtReleaseGC((Widget) w, w->strip_chart.fgGC);
! if (which & HIGHLIGHT)
XtReleaseGC((Widget) w, w->strip_chart.hiGC);
}
***************
*** 215,222 ****
--- 229,251 ----
static void Initialize (greq, gnew)
Widget greq, gnew;
{
+ int i;
+
PerfChartWidget w = (PerfChartWidget)gnew;
+ /*
+ * XXX The missing initializations have been made obvious by FreeBSD 2.2's
+ * new (`phk') malloc that doesn't initialize the malloc'ed areas to 0.
+ * Perhaps more bogons will lurk around, but the floating arithmetic ones
+ * have been the most annoying ones since they most likely cause a trap
+ * at startup time.
+ *
+ * Strange that people in the 90's still rely on malloc()
+ * returning an initialized region.
+ */
+ for ( i = 0; i < NUM_VALUES; i++ )
+ w->strip_chart.valuedata[i] = 0.0;
+
/* if we are working with a mono screen then turn off all warnings and alarms */
if ( mono_screen ) {
***************
*** 247,257 ****
w->strip_chart.currentBG = w->core.background_pixel;
w->strip_chart.interval = LABEL_ROOM;
w->strip_chart.max_value = 0.0;
! w->strip_chart.min_value = 99999.99;
w->strip_chart.points = NULL;
SetPoints(w);
}
!
static void Destroy (gw)
Widget gw;
{
--- 276,286 ----
w->strip_chart.currentBG = w->core.background_pixel;
w->strip_chart.interval = LABEL_ROOM;
w->strip_chart.max_value = 0.0;
! w->strip_chart.min_value = 99999;
w->strip_chart.points = NULL;
SetPoints(w);
}
!
static void Destroy (gw)
Widget gw;
{
***************
*** 265,271 ****
}
/*
! * NOTE: This function really needs to recieve graphics exposure
* events, but since this is not easily supported until R4 I am
* going to hold off until then.
*/
--- 294,300 ----
}
/*
! * NOTE: This function really needs to recieve graphics exposure
* events, but since this is not easily supported until R4 I am
* going to hold off until then.
*/
***************
*** 291,301 ****
XtIntervalId *id; /* unused */
{
PerfChartWidget w = (PerfChartWidget)client_data;
- XGCValues myXGCV;
double value, checkValue;
Display *dpy = XtDisplay(w);
Window win = XtWindow(w);
!
/* if (w->strip_chart.update > 0)
w->strip_chart.interval_id =
XtAppAddTimeOut(XtWidgetToApplicationContext( (Widget) w),
--- 320,329 ----
XtIntervalId *id; /* unused */
{
PerfChartWidget w = (PerfChartWidget)client_data;
double value, checkValue;
Display *dpy = XtDisplay(w);
Window win = XtWindow(w);
!
/* if (w->strip_chart.update > 0)
w->strip_chart.interval_id =
XtAppAddTimeOut(XtWidgetToApplicationContext( (Widget) w),
***************
*** 311,321 ****
XtCallCallbacks( (Widget)w, XtNgetValue, (XtPointer)&value );
! /*
! * Keep w->strip_chart.max_value up to date, and if this data
! * point is off the graph, change the scale to make it fit.
*/
!
if (value > w->strip_chart.max_value) {
w->strip_chart.max_value = value;
if (w->strip_chart.max_value > w->strip_chart.scale) {
--- 339,349 ----
XtCallCallbacks( (Widget)w, XtNgetValue, (XtPointer)&value );
! /*
! * Keep w->strip_chart.max_value up to date, and if this data
! * point is off the graph, change the scale to make it fit.
*/
!
if (value > w->strip_chart.max_value) {
w->strip_chart.max_value = value;
if (w->strip_chart.max_value > w->strip_chart.scale) {
***************
*** 323,330 ****
w->strip_chart.interval = repaint_window(w, 0, (int) w->core.width);
}
}
! if (value < w->strip_chart.min_value)
! w->strip_chart.min_value = value;
w->strip_chart.valuedata[w->strip_chart.interval] = value;
if (XtIsRealized((Widget)w)) {
--- 351,358 ----
w->strip_chart.interval = repaint_window(w, 0, (int) w->core.width);
}
}
! if (value < w->strip_chart.min_value)
! w->strip_chart.min_value = value;
w->strip_chart.valuedata[w->strip_chart.interval] = value;
if (XtIsRealized((Widget)w)) {
***************
*** 332,391 ****
(int)(w->core.height * value) / w->strip_chart.scale);
/* Check for high warnings and alarms */
!
if ( w->strip_chart.highWarn != 99999 ||
w->strip_chart.highAlarm != 99999 ) {
if ( w->strip_chart.immediate )
! checkValue = value;
else
! checkValue = w->strip_chart.max_value;
if ( checkValue >= w->strip_chart.highAlarm ) { /* check for high alarm */
if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) {
! XtVaSetValues(w, XtNbackground, w->strip_chart.alarmColor, NULL );
w->strip_chart.currentBG = w->strip_chart.alarmColor;
}
}
else if ( checkValue >= w->strip_chart.highWarn ) { /* check for high warning */
if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) {
! XtVaSetValues(w, XtNbackground, w->strip_chart.warnColor, NULL );
w->strip_chart.currentBG = w->strip_chart.warnColor;
}
}
else {
if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */
! XtVaSetValues(w, XtNbackground, w->strip_chart.okColor, NULL );
w->strip_chart.currentBG = w->strip_chart.okColor;
}
}
}
!
/* Check for low warnings and alarms */
!
else if ( w->strip_chart.lowWarn != 0 ||
w->strip_chart.lowAlarm != 0 ) {
if ( w->strip_chart.immediate )
! checkValue = value;
else
! checkValue = w->strip_chart.min_value;
if ( checkValue <= w->strip_chart.lowAlarm ) { /* check for low alarm */
if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) {
! XtVaSetValues(w, XtNbackground, w->strip_chart.alarmColor, NULL );
w->strip_chart.currentBG = w->strip_chart.alarmColor;
}
}
else if ( checkValue <= w->strip_chart.lowWarn ) { /* check for low warning */
if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) {
! XtVaSetValues(w, XtNbackground, w->strip_chart.warnColor, NULL );
w->strip_chart.currentBG = w->strip_chart.warnColor;
}
}
else {
if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */
! XtVaSetValues(w, XtNbackground, w->strip_chart.okColor, NULL );
w->strip_chart.currentBG = w->strip_chart.okColor;
}
}
--- 360,419 ----
(int)(w->core.height * value) / w->strip_chart.scale);
/* Check for high warnings and alarms */
!
if ( w->strip_chart.highWarn != 99999 ||
w->strip_chart.highAlarm != 99999 ) {
if ( w->strip_chart.immediate )
! checkValue = value / SCALE_HACK;
else
! checkValue = w->strip_chart.max_value / SCALE_HACK;
if ( checkValue >= w->strip_chart.highAlarm ) { /* check for high alarm */
if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) {
! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.alarmColor, NULL );
w->strip_chart.currentBG = w->strip_chart.alarmColor;
}
}
else if ( checkValue >= w->strip_chart.highWarn ) { /* check for high warning */
if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) {
! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.warnColor, NULL );
w->strip_chart.currentBG = w->strip_chart.warnColor;
}
}
else {
if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */
! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.okColor, NULL );
w->strip_chart.currentBG = w->strip_chart.okColor;
}
}
}
!
/* Check for low warnings and alarms */
!
else if ( w->strip_chart.lowWarn != 0 ||
w->strip_chart.lowAlarm != 0 ) {
if ( w->strip_chart.immediate )
! checkValue = value / SCALE_HACK;
else
! checkValue = w->strip_chart.min_value / SCALE_HACK;
if ( checkValue <= w->strip_chart.lowAlarm ) { /* check for low alarm */
if ( w->strip_chart.currentBG != w->strip_chart.alarmColor ) {
! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.alarmColor, NULL );
w->strip_chart.currentBG = w->strip_chart.alarmColor;
}
}
else if ( checkValue <= w->strip_chart.lowWarn ) { /* check for low warning */
if ( w->strip_chart.currentBG != w->strip_chart.warnColor ) {
! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.warnColor, NULL );
w->strip_chart.currentBG = w->strip_chart.warnColor;
}
}
else {
if ( w->strip_chart.currentBG != w->strip_chart.okColor ) { /* reset to okColor? */
! XtVaSetValues((Widget)w, XtNbackground, w->strip_chart.okColor, NULL );
w->strip_chart.currentBG = w->strip_chart.okColor;
}
}
***************
*** 393,413 ****
if ( !w->strip_chart.fillRect ) { /* draw line graph */
int y = (int) (w->core.height -
! (int)(w->core.height *
! w->strip_chart.valuedata[w->strip_chart.interval-1] ) /
w->strip_chart.scale);
XDrawLine(dpy, win, w->strip_chart.fgGC,
! w->strip_chart.interval-1, y,
w->strip_chart.interval, y1);
}
else /* draw filled graph */
XFillRectangle(dpy, win, w->strip_chart.fgGC,
! w->strip_chart.interval, y1,
(unsigned int) 1, w->core.height - y1);
/*
* Fill in the graph lines we just painted over.
!
if (w->strip_chart.points != NULL) {
w->strip_chart.points[0].x = w->strip_chart.interval;
--- 421,441 ----
if ( !w->strip_chart.fillRect ) { /* draw line graph */
int y = (int) (w->core.height -
! (int)(w->core.height *
! w->strip_chart.valuedata[w->strip_chart.interval-1] ) /
w->strip_chart.scale);
XDrawLine(dpy, win, w->strip_chart.fgGC,
! w->strip_chart.interval-1, y,
w->strip_chart.interval, y1);
}
else /* draw filled graph */
XFillRectangle(dpy, win, w->strip_chart.fgGC,
! w->strip_chart.interval, y1,
(unsigned int) 1, w->core.height - y1);
/*
* Fill in the graph lines we just painted over.
!
if (w->strip_chart.points != NULL) {
w->strip_chart.points[0].x = w->strip_chart.interval;
***************
*** 434,455 ****
#define XDS(s) XDrawString(XtDisplay(w), XtWindow(w), \
w->strip_chart.hiGC, x, y, s, strlen(s))
! static int
repaint_window(w, left, width)
PerfChartWidget w;
int left, width;
{
! register int i, j;
register int next = w->strip_chart.interval;
int scale = w->strip_chart.scale;
int scalewidth = 0;
! int x, x1, x2, y, y1, y2;
char numstring[24];
/* Compute the minimum scale required to graph the data, but don't go
lower than min_scale. */
! if (w->strip_chart.interval != 0 || scale <= (int)w->strip_chart.max_value)
scale = ((int) (w->strip_chart.max_value)) + 1;
if (scale < w->strip_chart.min_scale)
scale = w->strip_chart.min_scale;
--- 462,485 ----
#define XDS(s) XDrawString(XtDisplay(w), XtWindow(w), \
w->strip_chart.hiGC, x, y, s, strlen(s))
! static int
repaint_window(w, left, width)
PerfChartWidget w;
int left, width;
{
! register int i;
register int next = w->strip_chart.interval;
int scale = w->strip_chart.scale;
int scalewidth = 0;
! int x, y, y1;
char numstring[24];
/* Compute the minimum scale required to graph the data, but don't go
lower than min_scale. */
!
! if (w->strip_chart.interval != 0 || scale <= (int)w->strip_chart.max_value) {
scale = ((int) (w->strip_chart.max_value)) + 1;
+ }
if (scale < w->strip_chart.min_scale)
scale = w->strip_chart.min_scale;
***************
*** 461,467 ****
SetPoints(w);
! if (XtIsRealized ((Widget) w))
XClearWindow (XtDisplay (w), XtWindow (w));
}
--- 491,497 ----
SetPoints(w);
! if (XtIsRealized ((Widget) w))
XClearWindow (XtDisplay (w), XtWindow (w));
}
***************
*** 479,502 ****
/* draw titles */
if ( w->strip_chart.topLabel ) {
! y = w->core.height/2;
x = 4;
XDS(w->strip_chart.topLabel);
}
if ( w->strip_chart.botLabel ) {
! y = (w->core.height/2) + w->strip_chart.font_height;
x = 4;
XDS(w->strip_chart.botLabel);
}
/* draw scale labels */
!
(void) sprintf(numstring, "%d ", 0);
x = LABEL_ROOM - XTW(numstring);
y = w->core.height - 1;
XDS(numstring); /* draw min value */
(void) sprintf(numstring, "%d ", (int)w->strip_chart.max_value );
x = LABEL_ROOM - XTW(numstring);
y = w->strip_chart.font_height - 4;
XDS(numstring); /* draw max value */
--- 509,539 ----
/* draw titles */
if ( w->strip_chart.topLabel ) {
! y = w->core.height/2 - 2;
x = 4;
XDS(w->strip_chart.topLabel);
}
if ( w->strip_chart.botLabel ) {
! y = (w->core.height/2 - 2) + w->strip_chart.font_height;
x = 4;
XDS(w->strip_chart.botLabel);
}
/* draw scale labels */
! #ifdef __FreeBSD__
! (void) sprintf(numstring, "%1.1f ", 0.0);
! #else
(void) sprintf(numstring, "%d ", 0);
+ #endif
x = LABEL_ROOM - XTW(numstring);
y = w->core.height - 1;
XDS(numstring); /* draw min value */
+ #ifdef __FreeBSD__
+ (void) sprintf(numstring, "%01.1f ", w->strip_chart.max_value / SCALE_HACK );
+ #else
(void) sprintf(numstring, "%d ", (int)w->strip_chart.max_value );
+ #endif
x = LABEL_ROOM - XTW(numstring);
y = w->strip_chart.font_height - 4;
XDS(numstring); /* draw max value */
***************
*** 511,525 ****
if ( i == left && left + 1 == width && width != next ) {
y1 = (int) (w->core.height -
! (int)(w->core.height * w->strip_chart.valuedata[i-1]) /
! w->strip_chart.scale);
XDrawLine(dpy, win, w->strip_chart.fgGC,
i-1, y1, i, y);
}
else if ( i == left ) { /* If this is the leftmost point, then just plot it. */
!
XDrawPoint(dpy, win, w->strip_chart.fgGC, i, y);
! }
else {
/* If this is not the left most point, then draw a line
* connecting this point with the one to its left.
--- 548,561 ----
if ( i == left && left + 1 == width && width != next ) {
y1 = (int) (w->core.height -
! (int)(w->core.height * w->strip_chart.valuedata[i-1]) / w->strip_chart.scale);
XDrawLine(dpy, win, w->strip_chart.fgGC,
i-1, y1, i, y);
}
else if ( i == left ) { /* If this is the leftmost point, then just plot it. */
!
XDrawPoint(dpy, win, w->strip_chart.fgGC, i, y);
! }
else {
/* If this is not the left most point, then draw a line
* connecting this point with the one to its left.
***************
*** 536,542 ****
int y = (int) (w->core.height -
(int)(w->core.height * w->strip_chart.valuedata[i]) /
w->strip_chart.scale);
! XFillRectangle(dpy, win, w->strip_chart.fgGC,
i, /* x */
y, /* y */
(unsigned int) 1, /* width */
--- 572,578 ----
int y = (int) (w->core.height -
(int)(w->core.height * w->strip_chart.valuedata[i]) /
w->strip_chart.scale);
! XFillRectangle(dpy, win, w->strip_chart.fgGC,
i, /* x */
y, /* y */
(unsigned int) 1, /* width */
***************
*** 545,551 ****
}
! /************** Draw graph reference lines
for (i = 1; i < w->strip_chart.scale; i++) {
j = i * ((int)w->core.height / w->strip_chart.scale);
XDrawLine(dpy, win, w->strip_chart.hiGC, left , j, scalewidth, j);
--- 581,587 ----
}
! /************** Draw graph reference lines
for (i = 1; i < w->strip_chart.scale; i++) {
j = i * ((int)w->core.height / w->strip_chart.scale);
XDrawLine(dpy, win, w->strip_chart.hiGC, left , j, scalewidth, j);
***************
*** 566,573 ****
PerfChartWidget w;
Boolean blit;
{
! double old_max, old_min;
! int left, i, j;
register int next = w->strip_chart.interval;
if (!XtIsRealized((Widget) w)) return;
--- 602,609 ----
PerfChartWidget w;
Boolean blit;
{
! double old_max;
! int i, j;
register int next = w->strip_chart.interval;
if (!XtIsRealized((Widget) w)) return;
***************
*** 582,598 ****
bcopy((char *)(w->strip_chart.valuedata + next - j),
(char *)(w->strip_chart.valuedata), j * sizeof(double));
next = w->strip_chart.interval = j;
!
/*
! * Since we just lost some data, recompute the
! * w->strip_chart.max_value, and min_value.
*/
old_max = w->strip_chart.max_value;
w->strip_chart.max_value = 0.0;
! w->strip_chart.min_value = 99999.99;
for (i = LABEL_ROOM; i < next; i++) {
! if (w->strip_chart.valuedata[i] > w->strip_chart.max_value)
w->strip_chart.max_value = w->strip_chart.valuedata[i];
if ( w->strip_chart.valuedata[i] < w->strip_chart.min_value )
w->strip_chart.min_value = w->strip_chart.valuedata[i];
--- 618,644 ----
bcopy((char *)(w->strip_chart.valuedata + next - j),
(char *)(w->strip_chart.valuedata), j * sizeof(double));
next = w->strip_chart.interval = j;
!
/*
! * Since we just lost some data, recompute the
! * w->strip_chart.max_value, and min_value.
*/
old_max = w->strip_chart.max_value;
+ /*
+ * To avoid scaling of Free Swap cause it changes so slow, it's
+ * better to not change the max value of 100%
+ */
+ #ifdef __FreeBSD__
+ if ( strcmp(w->strip_chart.botLabel, botNames[FRE_MEM]) != 0 )
+ w->strip_chart.max_value = 0.0;
+ #else
w->strip_chart.max_value = 0.0;
! #endif
!
! w->strip_chart.min_value = 99999;
for (i = LABEL_ROOM; i < next; i++) {
! if (w->strip_chart.valuedata[i] > w->strip_chart.max_value)
w->strip_chart.max_value = w->strip_chart.valuedata[i];
if ( w->strip_chart.valuedata[i] < w->strip_chart.min_value )
w->strip_chart.min_value = w->strip_chart.valuedata[i];
***************
*** 611,622 ****
(unsigned int) j-LABEL_ROOM, (unsigned int) w->core.height,
LABEL_ROOM, 0);
! XClearArea(XtDisplay((Widget)w), XtWindow((Widget)w),
! (int) j, 0,
(unsigned int) w->core.width - j, (unsigned int)w->core.height,
FALSE);
! /* Draw graph reference lines
left = j;
for (i = 1; i < w->strip_chart.scale; i++) {
j = i * ((int)w->core.height / w->strip_chart.scale);
--- 657,668 ----
(unsigned int) j-LABEL_ROOM, (unsigned int) w->core.height,
LABEL_ROOM, 0);
! XClearArea(XtDisplay((Widget)w), XtWindow((Widget)w),
! (int) j, 0,
(unsigned int) w->core.width - j, (unsigned int)w->core.height,
FALSE);
! /* Draw graph reference lines
left = j;
for (i = 1; i < w->strip_chart.scale; i++) {
j = i * ((int)w->core.height / w->strip_chart.scale);
***************
*** 645,663 ****
draw_graph, (XtPointer)w);
}
*/
if ( w->strip_chart.min_scale > (int) ((w->strip_chart.max_value) + 1) )
ret_val = TRUE;
!
if ( w->strip_chart.fgpixel != old->strip_chart.fgpixel ) {
new_gc |= FOREGROUND;
ret_val = True;
}
!
if ( w->strip_chart.hipixel != old->strip_chart.hipixel ) {
new_gc |= HIGHLIGHT;
ret_val = True;
}
!
DestroyGC(old, new_gc);
CreateGC(w, new_gc);
--- 691,713 ----
draw_graph, (XtPointer)w);
}
*/
+ #ifdef __FreeBSD__
+ if ( w->strip_chart.min_scale > ((w->strip_chart.max_value)) )
+ #else
if ( w->strip_chart.min_scale > (int) ((w->strip_chart.max_value) + 1) )
+ #endif
ret_val = TRUE;
!
if ( w->strip_chart.fgpixel != old->strip_chart.fgpixel ) {
new_gc |= FOREGROUND;
ret_val = True;
}
!
if ( w->strip_chart.hipixel != old->strip_chart.hipixel ) {
new_gc |= HIGHLIGHT;
ret_val = True;
}
!
DestroyGC(old, new_gc);
CreateGC(w, new_gc);
***************
*** 686,701 ****
w->strip_chart.points = NULL;
return;
}
!
! size = sizeof(XPoint) * (w->strip_chart.scale - 1);
points = (XPoint *) XtRealloc( (XtPointer) w->strip_chart.points, size);
w->strip_chart.points = points;
/* Draw graph reference lines into clip mask */
! for (i = 1; i < w->strip_chart.scale; i++) {
points[i - 1].x = 0;
points[i - 1].y = HEIGHT / w->strip_chart.scale;
}
}
--- 736,752 ----
w->strip_chart.points = NULL;
return;
}
!
! size = sizeof(XPoint) * (w->strip_chart.scale - 1) / SCALE_HACK;
points = (XPoint *) XtRealloc( (XtPointer) w->strip_chart.points, size);
w->strip_chart.points = points;
/* Draw graph reference lines into clip mask */
! for (i = 1; i < w->strip_chart.scale / SCALE_HACK; i++) {
points[i - 1].x = 0;
points[i - 1].y = HEIGHT / w->strip_chart.scale;
}
+
}