From http://www.jwz.org/xscreensaver/xscreensaver-5.32.tar.gz
[xscreensaver] / hacks / fps.c
index 2aa0174377756afeaea6754ada674ff93a8b4a44..5704337408f5bff2c9038ea4f0e5c61b61c94e5f 100644 (file)
@@ -1,4 +1,4 @@
-/* fps, Copyright (c) 2001-2008 Jamie Zawinski <jwz@jwz.org>
+/* fps, Copyright (c) 2001-2014 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
@@ -23,7 +23,6 @@ fps_init (Display *dpy, Window window)
   fps_state *st;
   const char *font;
   XFontStruct *f;
-  int first, last;
 
   if (! get_boolean_resource (dpy, "doFPS", "DoFPS"))
     return 0;
@@ -40,9 +39,6 @@ fps_init (Display *dpy, Window window)
   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;
@@ -85,7 +81,7 @@ fps_slept (fps_state *st, unsigned long usecs)
 
 
 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? */
 
@@ -153,6 +149,18 @@ fps_compute (fps_state *st, unsigned long polys)
           else
             sprintf (st->string + strlen(st->string), "%lu%s ", polys, s);
         }
+
+      if (depth >= 0.0)
+        {
+          unsigned long 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;
@@ -190,7 +198,7 @@ string_width (XFontStruct *f, const char *c, int *height_ret)
 }
 
 
-/* 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)
@@ -233,7 +241,7 @@ fps_draw (fps_state *st)
       s = strchr (string, '\n');
       if (! s) s = string + strlen(string);
       XDrawString (st->dpy, st->window, st->draw_gc,
-                   x, y, string, s - string);
+                   x, y, string, (int) (s - string));
       string = s;
       string++;
       lines--;