projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ftp://netsw.org/x11/tools/desktop/xscreensaver-4.07.tar.gz
[xscreensaver]
/
utils
/
visual.c
diff --git
a/utils/visual.c
b/utils/visual.c
index 195ef79db8ff1a5092d8c40ccbfbf6beb4afffd4..2e3b9a9619007a5605cc23b3649560b75b4dbfd2 100644
(file)
--- a/
utils/visual.c
+++ b/
utils/visual.c
@@
-1,4
+1,4
@@
-/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999
+/* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999
, 2000
* by Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* by Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@
-19,6
+19,7
@@
#include "resources.h" /* for get_string_resource() */
#include "visual.h"
#include "resources.h" /* for get_string_resource() */
#include "visual.h"
+#include <string.h>
#include <X11/Xutil.h>
extern char *progname;
#include <X11/Xutil.h>
extern char *progname;
@@
-36,8
+37,6
@@
static Visual *pick_best_visual (Screen *, Bool, Bool);
static Visual *pick_mono_visual (Screen *);
static Visual *pick_best_visual_of_class (Screen *, int);
static Visual *pick_best_gl_visual (Screen *);
static Visual *pick_mono_visual (Screen *);
static Visual *pick_best_visual_of_class (Screen *, int);
static Visual *pick_best_gl_visual (Screen *);
-static Visual *id_to_visual (Screen *, int);
-static Visual *id_to_visual (Screen *screen, int id);
#define DEFAULT_VISUAL -1
#define DEFAULT_VISUAL -1
@@
-62,7
+61,7
@@
get_visual (Screen *screen, const char *string, Bool prefer_writable_cells,
for (tmp = v; *tmp; tmp++)
if (isupper (*tmp)) *tmp = _tolower (*tmp);
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;
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
+134,7
@@
get_visual (Screen *screen, const char *string, Bool prefer_writable_cells,
if (visual)
result = visual;
else if (verbose_p)
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)
{
}
else if (vclass == SPECIFIC_VISUAL)
{
@@
-263,7
+262,8
@@
pick_best_visual_of_class (Screen *screen, int visual_class)
/* choose the 'best' one, if multiple */
int i, best;
Visual *visual;
/* 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) ||
/* 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
+325,7
@@
pick_best_gl_visual (Screen *screen)
result = vi_out[0].visual;
}
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);
/* No half-depth TrueColor? Ok, try for any TrueColor (the deepest.) */
result = pick_best_visual_of_class (screen, TrueColor);
@@
-337,7
+337,7
@@
pick_best_gl_visual (Screen *screen)
}
}
-
static
Visual *
+Visual *
id_to_visual (Screen *screen, int id)
{
Display *dpy = DisplayOfScreen (screen);
id_to_visual (Screen *screen, int id)
{
Display *dpy = DisplayOfScreen (screen);
@@
-429,13
+429,12
@@
has_writable_cells (Screen *screen, Visual *visual)
{
case GrayScale: /* Mappable grays. */
case PseudoColor: /* Mappable colors. */
{
case GrayScale: /* Mappable grays. */
case PseudoColor: /* Mappable colors. */
+ case DirectColor: /* Like TrueColor, but with three colormaps:
+ one each for red, green, and blue. */
return True;
case StaticGray: /* Fixed grays. */
case TrueColor: /* Fixed colors. */
return True;
case StaticGray: /* Fixed grays. */
case TrueColor: /* Fixed colors. */
- case StaticColor: /* (What's the difference again?) */
- case DirectColor: /* DirectColor visuals are like TrueColor, but have
- three colormaps - one for each component of RGB.
- Screw it. */
+ case StaticColor: /* Like PseudoColor with an unmodifiable colormap. */
return False;
default:
abort();
return False;
default:
abort();