From http://www.jwz.org/xscreensaver/xscreensaver-5.40.tar.gz
[xscreensaver] / hacks / interference.c
index cbb6fae9f09fec5388927d8b6f62563c63f43178..78601439d9743fa1271803e2be963c8dba81bf6f 100644 (file)
@@ -696,6 +696,7 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c)
   int mono;
   int gray;
   int radius;
+  double scale = 1;
   XGCValues val;
   Bool dbuf = get_boolean_resource (dpy, "doubleBuffer", "Boolean");
 
@@ -749,6 +750,9 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c)
   if(radius < 1)
     radius = 1;
 
+  if (xgwa.width > 2560) scale = 3.5;  /* Retina displays */
+  radius *= scale;
+
   create_image(dpy, c, &xgwa);
 
   if(!mono) {
@@ -843,7 +847,7 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c)
       ((float)radius);
     c->wave_height[i] = 
       (unsigned)
-      ((max + max*cos(fi/50.0)) / 2.0);
+      ((max + max*cos(fi/(50.0 * scale))) / 2.0);
   }
 
   c->source = calloc(c->count, sizeof(struct inter_source));