-/* fps, Copyright (c) 2001-2008 Jamie Zawinski <jwz@jwz.org>
+/* fps, Copyright (c) 2001-2011 Jamie Zawinski <jwz@jwz.org>
* Draw a frames-per-second display (Xlib and OpenGL).
*
* Permission to use, copy, modify, distribute, and sell this software and its
fps_state *st;
const char *font;
XFontStruct *f;
- int first, last;
if (! get_boolean_resource (dpy, "doFPS", "DoFPS"))
return 0;
f = XLoadQueryFont (dpy, font);
if (!f) f = XLoadQueryFont (dpy, "fixed");
- first = f->min_char_or_byte2;
- last = f->max_char_or_byte2;
-
{
XWindowAttributes xgwa;
XGCValues gcv;
st->x = 10;
st->y = 10;
if (get_boolean_resource (dpy, "fpsTop", "FPSTop"))
- st->y = - (st->font->ascent + st->font->descent + 10);
+ /* don't leave a blank line in GL top-fps. */
+ st->y = - (/*st->font->ascent +*/ st->font->descent + 10);
strcpy (st->string, "FPS: ... ");
double
-fps_compute (fps_state *st, unsigned long polys)
+fps_compute (fps_state *st, unsigned long polys, double depth)
{
if (! st) return 0; /* too early? */
else
sprintf (st->string + strlen(st->string), "%lu%s ", polys, s);
}
+
+ if (depth >= 0.0)
+ {
+ int L = strlen (st->string);
+ char *s = st->string + L;
+ strcat (s, "\nDepth: ");
+ sprintf (s + strlen(s), "%.1f", depth);
+ L = strlen (s);
+ /* Remove trailing ".0" in case depth is not a fraction. */
+ if (s[L-2] == '.' && s[L-1] == '0')
+ s[L-2] = 0;
+ }
}
return st->last_fps;
}
-/* This function is used only in Xlib mode. For GL mode, see glx/fps-glx.c.
+/* This function is used only in Xlib mode. For GL mode, see glx/fps-gl.c.
*/
void
fps_draw (fps_state *st)
if (st->clear_p)
{
int w, h;
- int lh = st->font->ascent + st->font->descent;
w = string_width (st->font, string, &h);
XFillRectangle (st->dpy, st->window, st->erase_gc,
x - st->font->descent,