static Bool stepPositions(void *closure) { CompScreen *s = closure; int i, ii, numSnow, numAutumn, numStars, numFf, numBubbles, numTmp; element *ele; Bool onTopOfWindows; E_SCREEN(s); Bool active = FALSE; //THis makes sure nothing happens if all features are off. for (ii = 0; ii <= 4; ii++) { if (eScreen->isActive[ii]) active = TRUE; } if (!active) return TRUE; ele = eScreen->allElements; if (eScreen->isActive[0]) numAutumn = elementsGetNumLeaves (s->display); else numAutumn = 0; if (eScreen->isActive[1]) numFf = elementsGetNumFireflies (s->display); else numFf = 0; if (eScreen->isActive[2]) numSnow = elementsGetNumSnowflakes (s->display); else numSnow = 0; if (eScreen->isActive[3]) numStars = elementsGetNumStars (s->display); else numStars = 0; if (eScreen->isActive[4]) numBubbles = elementsGetNumBubbles (s->display); else numBubbles = 0; numTmp = numAutumn + numFf + numSnow + numStars + numBubbles; onTopOfWindows = elementsGetOverWindows (s->display); for (i = 0; i < numTmp; i++) elementTestCreate(eScreen, ele++); if (active && !onTopOfWindows ) { CompWindow *w; for (w = s->windows; w; w = w->next) { if (w->type & CompWindowTypeDesktopMask) addWindowDamage (w); } } else if (active) damageScreen (s); return TRUE;
static Bool stepPositions(CompScreen *s, int elapsed) { int i, numSnow, numAutumn, numStars, numFf, numBubbles, numTmp; element *ele; Bool onTopOfWindows; Bool active = elementActive(s); E_SCREEN(s); if (!active) return TRUE; ele = eScreen->allElements; if (eScreen->isActive[0]) numAutumn = elementsGetNumLeaves (s->display); else numAutumn = 0; if (eScreen->isActive[1]) numFf = elementsGetNumFireflies (s->display); else numFf = 0; if (eScreen->isActive[2]) numSnow = elementsGetNumSnowflakes (s->display); else numSnow = 0; if (eScreen->isActive[3]) numStars = elementsGetNumStars (s->display); else numStars = 0; if (eScreen->isActive[4]) numBubbles = elementsGetNumBubbles (s->display); else numBubbles = 0; numTmp = numAutumn + numFf + numSnow + numStars + numBubbles; onTopOfWindows = elementsGetOverWindows (s->display); for (i = 0; i < numTmp; i++) elementTestCreate(eScreen, ele++, elapsed); if (active) { CompWindow *w; for (w = s->windows; w; w = w->next) { if (!onTopOfWindows && (w->type & CompWindowTypeDesktopMask)) addWindowDamage (w); else if (onTopOfWindows && isNormalWin(w)) { eScreen->topWindow = w; addWindowDamage (w); } } damageScreen (s); } return TRUE; }