http://packetstormsecurity.org/UNIX/admin/xscreensaver-3.29.tar.gz
[xscreensaver] / hacks / glx / sproingiewrap.c
index dff236b08cef160a6b87e0718d133d429b0e5246..517c22da966b4c99e78e6d60efc8d241feba0b4f 100644 (file)
@@ -57,11 +57,14 @@ static const char sccsid[] = "@(#)sproingiewrap.c   4.07 97/11/24 xlockmore";
 # define PROGCLASS                                     "Sproingies"
 # define HACK_INIT                                     init_sproingies
 # define HACK_DRAW                                     draw_sproingies
+# define HACK_RESHAPE                          reshape_sproingies
 # define sproingies_opts                       xlockmore_opts
-# define DEFAULTS      "*delay:                100     \n"                     \
+# define DEFAULTS      "*delay:                20000   \n"                     \
                                        "*count:                5       \n"                     \
                                        "*cycles:               0       \n"                     \
                                        "*size:                 0       \n"                     \
+                                       "*showFPS:      False   \n"                     \
+                                       "*fpsTop:       True    \n"                     \
                                        "*wireframe:    False   \n"
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -88,13 +91,9 @@ ModStruct   sproingies_description =
 #include <time.h>
 
 void        NextSproingie(int screen);
-void        NextSproingieDisplay(int screen);
-void        DisplaySproingies(int screen);
-
-#if 0
+void        NextSproingieDisplay(int screen,int pause);
+void        DisplaySproingies(int screen,int pause);
 void        ReshapeSproingies(int w, int h);
-
-#endif
 void        CleanupSproingies(int screen);
 void        InitSproingies(int wfmode, int grnd, int mspr, int screen, int numscreens, int mono);
 
@@ -114,9 +113,13 @@ static sproingiesstruct *sproingies = NULL;
 static Display *swap_display;
 static Window swap_window;
 
+static ModeInfo *global_mi_kludge;
+
 void
 SproingieSwap(void)
 {
+    ModeInfo *mi = global_mi_kludge;
+    if (mi->fps_p) do_fps (mi);
        glFinish();
        glXSwapBuffers(swap_display, swap_window);
 }
@@ -136,6 +139,8 @@ init_sproingies(ModeInfo * mi)
        sproingiesstruct *sp;
        int         wfmode = 0, grnd, mspr, w, h;
 
+    global_mi_kludge = mi;
+
        if (sproingies == NULL) {
                if ((sproingies = (sproingiesstruct *) calloc(MI_NUM_SCREENS(mi),
                                         sizeof (sproingiesstruct))) == NULL)
@@ -181,7 +186,7 @@ init_sproingies(ModeInfo * mi)
 
                swap_display = display;
                swap_window = window;
-               DisplaySproingies(MI_SCREEN(mi));
+               DisplaySproingies(MI_SCREEN(mi),mi->pause);
        } else {
                MI_CLEARWINDOW(mi);
        }
@@ -204,7 +209,7 @@ draw_sproingies(ModeInfo * mi)
        swap_display = display;
        swap_window = window;
 
-       NextSproingieDisplay(MI_SCREEN(mi));    /* It will swap. */
+       NextSproingieDisplay(MI_SCREEN(mi),mi->pause);  /* It will swap. */
 }
 
 void
@@ -217,6 +222,13 @@ refresh_sproingies(ModeInfo * mi)
         */
 }
 
+void
+reshape_sproingies (ModeInfo *mi, int w, int h)
+{
+  ReshapeSproingies(w, h);
+}
+
+
 void
 release_sproingies(ModeInfo * mi)
 {