From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver] / hacks / penrose.c
index eedf0fdffe9aee95351b756e40c596e6fc85627d..603db735ebeadd22562326f5eb61354a1843f78e 100644 (file)
@@ -87,10 +87,9 @@ If one of these are hit penrose will reinitialize.
                                        "*size: 40 \n" \
                                        "*ncolors: 64 \n" \
                                        "*fpsSolid: true \n" \
+                                       "*ignoreRotation: True \n" \
 
 # define refresh_penrose 0
-# define reshape_penrose 0
-# define penrose_handle_event 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # include "xlock.h"            /* from the xlockmore distribution */
@@ -1329,6 +1328,14 @@ draw_penrose(ModeInfo * mi)
 }
 
 
+ENTRYPOINT void
+reshape_penrose(ModeInfo * mi, int width, int height)
+{
+       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
+       tp->width = width;
+       tp->height = height;
+}
+
 /* Total clean-up. */
 ENTRYPOINT void
 release_penrose(ModeInfo * mi)
@@ -1343,6 +1350,18 @@ release_penrose(ModeInfo * mi)
        }
 }
 
+ENTRYPOINT Bool
+penrose_handle_event (ModeInfo *mi, XEvent *event)
+{
+  if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+    {
+      init_penrose (mi);
+      return True;
+    }
+  return False;
+}
+
+
 XSCREENSAVER_MODULE ("Penrose", penrose)
 
 #endif /* MODE_penrose */