ftp://ftp.krokus.ru/pub/OpenBSD/distfiles/xscreensaver-5.01.tar.gz
[xscreensaver] / hacks / eruption.c
index 2084cbf27bc77cfd150c57f5d44f2c806e4cbab1..14809b9f7d80095788707c93001ed5b08b8da5eb 100644 (file)
@@ -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;