http://ftp.x.org/contrib/applications/xscreensaver-3.22.tar.gz
[xscreensaver] / utils / visual.c
index 195ef79db8ff1a5092d8c40ccbfbf6beb4afffd4..57b73151c53f6a4cd7a7c3611c08f389520bb573 100644 (file)
@@ -62,7 +62,7 @@ get_visual (Screen *screen, const char *string, Bool prefer_writable_cells,
     for (tmp = v; *tmp; tmp++)
       if (isupper (*tmp)) *tmp = _tolower (*tmp);
 
-  if (!v)                                        vclass = BEST_VISUAL;
+  if (!v || !*v)                                 vclass = BEST_VISUAL;
   else if (!strcmp (v, "default"))               vclass = DEFAULT_VISUAL;
   else if (!strcmp (v, "best"))                  vclass = BEST_VISUAL;
   else if (!strcmp (v, "mono"))                  vclass = MONO_VISUAL;
@@ -135,7 +135,7 @@ get_visual (Screen *screen, const char *string, Bool prefer_writable_cells,
       if (visual)
        result = visual;
       else if (verbose_p)
-       fprintf (stderr, "%s: no visual suitable for GL.\n", progname, v);
+       fprintf (stderr, "%s: no visual suitable for GL.\n", progname);
     }
   else if (vclass == SPECIFIC_VISUAL)
     {
@@ -263,7 +263,8 @@ pick_best_visual_of_class (Screen *screen, int visual_class)
       /* choose the 'best' one, if multiple */
       int i, best;
       Visual *visual;
-      for (i = 0, best = 0; i < out_count; i++)
+/*      for (i = 0, best = 0; i < out_count; i++) */
+      for (i = out_count-1, best = i; i >= 0; i--) /* go backwards */
        /* It's better if it's deeper, or if it's the same depth with
           more cells (does that ever happen?  Well, it could...) */
        if ((vi_out [i].depth > vi_out [best].depth) ||
@@ -325,7 +326,7 @@ pick_best_gl_visual (Screen *screen)
         result = vi_out[0].visual;
     }
 
-  if (result)
+  if (!result)
     /* No half-depth TrueColor?  Ok, try for any TrueColor (the deepest.) */
     result = pick_best_visual_of_class (screen, TrueColor);