From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver] / hacks / glx / gleidescope.c
index 3a14f2918eba8c7b798908482e09d8852b979880..9ea8035306a76519803cd30377599252127d9380 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- Mode: C; tab-width: 4 -*- */
 /* vim: set ai ts=4 sw=4: */
 
-#if !defined( lint ) && !defined( SABER )
+#if 0
 /*static const char sccsid[] = "@(#)gleidescope.c      1.0 03/06/27 xlockmore";*/
 #endif
 
@@ -471,10 +471,8 @@ gleidescope_handle_event(ModeInfo *mi, XEvent *event)
        printf("event:%d\n", event->xany.type);
        printf("button:%d\n", event->xbutton.button);
        */
-       switch(event->xany.type)
-       {
-               case ButtonPress:
-
+       if (event->xany.type == ButtonPress)
+      {
                        if (event->xbutton.button == Button1 ||
                 event->xbutton.button == Button3)
                        {
@@ -498,10 +496,8 @@ gleidescope_handle_event(ModeInfo *mi, XEvent *event)
                                return True;
                        }
 #endif
-                       break;
-
-               case ButtonRelease:
-
+            } else if (event->xany.type == ButtonRelease)
+      {
                        if (event->xbutton.button == Button1 ||
                 event->xbutton.button == Button3)
                        {
@@ -509,10 +505,8 @@ gleidescope_handle_event(ModeInfo *mi, XEvent *event)
                                gp->button_down_p = False;
                                return True;
                        }
-                       break;
-
-               case MotionNotify:
-
+            } else if (event->xany.type == MotionNotify)
+      {
                        if (gp->button_down_p)
                        {
                                /* update mouse position */
@@ -523,8 +517,13 @@ gleidescope_handle_event(ModeInfo *mi, XEvent *event)
 
                                return True;
                        }
-                       break;
-       }
+      }
+  else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+    {
+      gp->start_time = -1;
+      gp->fade = 0;
+      return True;
+    }
 
        return False;
 }
@@ -1251,7 +1250,6 @@ draw(ModeInfo * mi)
 
     mi->polygon_count = 0;
 
-       glClearColor(0.5, 0.5, 0.5, 1.0);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
 
@@ -1543,6 +1541,7 @@ init_gleidescope(ModeInfo * mi)
        if ((gp->glx_context = init_GL(mi)) != NULL) {
 
                reshape_gleidescope(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+        clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */
 
                glDrawBuffer(GL_BACK);