-/* xscreensaver, Copyright (c) 1999 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1999, 2000 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
#define FLARE 1
#define NORMAL 2
#define FADE 3
+#define STATE_MAX FADE
#define CURSOR_INDEX 128
font = state->font;
state->scale = get_integer_resource ("scale", "Integer");
- state->ticks = 3 + get_integer_resource ("ticks", "Integer");
+ state->ticks = STATE_MAX + get_integer_resource ("ticks", "Integer");
#if 0
for (i = 0; i < font->n_properties; i++)
colors, &ncolors,
False, True, False);
+ /* Adjust to the number of colors we actually got. */
+ state->ticks = ncolors + STATE_MAX;
+
/* Now, GCs all around.
*/
state->gcv.font = font->fid;
for (i = 0; i < ncolors; i++)
{
state->gcv.foreground = colors[i].pixel;
- state->gcs[FADE + i] = XCreateGC (state->dpy, state->window,
- flags, &state->gcv);
+ state->gcs[STATE_MAX + i] = XCreateGC (state->dpy, state->window,
+ flags, &state->gcv);
}
}
continue;
XDrawString (state->dpy, p, state->gc1,
i * safe_width, font->ascent,
- string + i, 1);
+ (char *) (string + i), 1);
}
/* Draw the cursor. */
scroll (p_state *state)
{
int x, y;
+
for (x = 0; x < state->grid_width; x++)
{
- p_cell *from, *to;
+ p_cell *from = 0, *to = 0;
for (y = 1; y < state->grid_height; y++)
{
from = &state->cells[state->grid_width * y + x];
}
to = from;
- if (to->state == FLARE || to->state == NORMAL)
+ if (to && (to->state == FLARE || to->state == NORMAL))
{
to->state = FADE;
to->changed = True;
GC gc2 = ((cell->state + 2) < state->ticks
? state->gcs[cell->state + 2]
: 0);
- XCopyPlane (state->dpy, cell->p_char->pixmap, state->window,
- (gc2 ? gc2 : gc1),
- 0, 0, width, height, tx, ty, 1L);
+ GC gc3 = (gc2 ? gc2 : gc1);
+ if (gc3)
+ XCopyPlane (state->dpy, cell->p_char->pixmap, state->window, gc3,
+ 0, 0, width, height, tx, ty, 1L);
if (gc2)
{
XSetClipMask (state->dpy, gc1, cell->p_char->pixmap2);
{
if (state->input_available_p)
{
- char s[2];
+ unsigned char s[2];
int n = read (fileno (state->pipe), (void *) s, 1);
if (n == 1)
{