X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Feruption.c;h=5749aa6d7692e0f720f3ee50b6025068fcc66449;hb=6f5482d73adb0165c0130bb47d852644ab0c4869;hp=2084cbf27bc77cfd150c57f5d44f2c806e4cbab1;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/eruption.c b/hacks/eruption.c index 2084cbf2..5749aa6d 100644 --- a/hacks/eruption.c +++ b/hacks/eruption.c @@ -116,6 +116,7 @@ static void Execute( struct state *st ) else if (st->particles[i].xpos >= st->iWinWidth - 2) { st->particles[i].xpos = st->iWinWidth - 2; + if (st->particles[i].xpos < 1) st->particles[i].xpos = 1; st->particles[i].xdir = -st->particles[i].xdir + 4; st->particles[i].colorindex = st->iColorCount; } @@ -129,9 +130,11 @@ static void Execute( struct state *st ) else if (st->particles[i].ypos >= st->iWinHeight - 3) { st->particles[i].ypos = st->iWinHeight- 3; + if (st->particles[i].ypos < 1) st->particles[i].ypos = 1; st->particles[i].ydir = (-st->particles[i].ydir >> 2) - (random() % 2); st->particles[i].colorindex = st->iColorCount; } + /* st->gravity kicks in */ st->particles[i].ydir += st->gravity; @@ -140,6 +143,7 @@ static void Execute( struct state *st ) st->particles[i].colorindex--; /* draw particle */ + if (st->iWinHeight <= 2 || st->iWinWidth <= 2) continue; st->fire[st->particles[i].ypos][st->particles[i].xpos] = st->particles[i].colorindex; st->fire[st->particles[i].ypos][st->particles[i].xpos - 1] = st->particles[i].colorindex; st->fire[st->particles[i].ypos + 1][st->particles[i].xpos] = st->particles[i].colorindex; @@ -294,7 +298,7 @@ static void Initialize( struct state *st ) { XGCValues gcValues; XWindowAttributes XWinAttribs; - int iBitsPerPixel, i; + int /*iBitsPerPixel,*/ i; /* Create the Image for drawing */ XGetWindowAttributes( st->dpy, st->window, &XWinAttribs ); @@ -306,7 +310,7 @@ static void Initialize( struct state *st ) for( i=0; idpy = dpy; st->window = window; @@ -393,7 +396,6 @@ eruption_init (Display *dpy, Window window) st->delay = get_integer_resource(st->dpy, "delay", "Integer" ); st->cycles = get_integer_resource(st->dpy, "cycles", "Integer" ); - i = st->cycles; cache(st); @@ -447,6 +449,21 @@ static void eruption_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { +#if 0 + struct state *st = (struct state *) closure; + int i; + for (i = 0; i < st->iWinHeight; ++i) + free (st->fire[i]); + + st->iWinWidth = w; + st->iWinHeight = h; + + free (st->fire); + st->fire = calloc( st->iWinHeight, sizeof(unsigned char*)); + for (i = 0; i < st->iWinHeight; ++i) + st->fire[i] = calloc( st->iWinWidth, sizeof(unsigned char)); + st->draw_i = -1; +#endif } static Bool @@ -474,6 +491,7 @@ eruption_free (Display *dpy, Window window, void *closure) static const char *eruption_defaults [] = { ".background: black", ".foreground: white", + "*fpsTop: true", "*cycles: 80", "*ncolors: 256", "*delay: 10000",