X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fxjack.c;h=1765243cba111240466aa8045a2f238c39a49c66;hb=c70f94f648d51bb4828193124f325fa52b0e57f3;hp=b101f8573a45e47a827fd808cff09e106736b968;hpb=c1b9b55ad8d59dc05ef55e316aebf5863e7dfa56;p=xscreensaver diff --git a/hacks/xjack.c b/hacks/xjack.c index b101f857..1765243c 100644 --- a/hacks/xjack.c +++ b/hacks/xjack.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -62,12 +62,18 @@ xjack_reshape (Display *dpy, Window window, void *closure, st->rows--; st->columns--; + /* If the window is stupidly small, just truncate. */ + if (st->rows < 4) st->rows = 4; + if (st->columns < 12) st->columns = 12; + if (st->y > st->rows) st->y = st->rows-1; if (st->x > st->columns) st->x = st->columns-2; if (st->right > st->columns) st->right = st->columns; if (st->left > st->columns-20) st->left = st->columns-20; if (st->left < 0) st->left = 0; + + XClearWindow (st->dpy, st->window); } @@ -83,6 +89,12 @@ xjack_init (Display *dpy, Window window) st->s = source; st->delay = get_integer_resource (st->dpy, "delay", "Integer"); fontname = get_string_resource (st->dpy, "font", "Font"); + + XGetWindowAttributes (st->dpy, st->window, &st->xgwa); + + if (st->xgwa.width <= 480) + fontname = "-*-courier-medium-r-*-*-*-180-*-*-m-*-*-*"; + st->font = XLoadQueryFont (st->dpy, fontname); if (!st->font) @@ -98,8 +110,6 @@ xjack_init (Display *dpy, Window window) exit(1); } - XGetWindowAttributes (st->dpy, st->window, &st->xgwa); - gcv.font = st->font->fid; gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap, "foreground", "Foreground"); @@ -116,9 +126,12 @@ xjack_init (Display *dpy, Window window) xjack_reshape (dpy, window, st, st->xgwa.width, st->xgwa.height); - st->left = 0xFF & (random() % ((st->columns / 2)+1)); - st->right = st->left + (0xFF & (random() % (st->columns - st->left - 10) - + 10)); + if (st->columns >= 21) + { + st->left = 0xFF & (random() % ((st->columns / 2)+1)); + st->right = st->left + (0xFF & (random() % (st->columns - st->left - 10) + + 10)); + } st->x = 0; st->y = 0;