X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fbumps.c;h=094d31306c95485df70edd3e947ab0f35a72dcf2;hp=2f510f5a9b5a5b15487a21ddb4e457a5e953b223;hb=de460e831dc8578acfa8b72251ab9346c99c1f96;hpb=6b1c86cf395f59389e4ece4ea8f4bea2c332745b diff --git a/hacks/bumps.c b/hacks/bumps.c index 2f510f5a..094d3130 100644 --- a/hacks/bumps.c +++ b/hacks/bumps.c @@ -161,6 +161,7 @@ static void CreateBumps( SBumps *pBumps, Display *dpy, Window NewWin ) pBumps->SpotLight.nAccelMax = pBumps->SpotLight.nVelocityMax / 10.0f; pBumps->dpy = dpy; pBumps->Win = NewWin; + pBumps->screen = XWinAttribs.screen; pBumps->pXImage = NULL; iDiameter = ( ( pBumps->iWinWidth < pBumps->iWinHeight ) ? pBumps->iWinWidth : pBumps->iWinHeight ) / 2; @@ -330,11 +331,13 @@ static void InitBumpMap_2(Display *dpy, SBumps *pBumps) XWindowAttributes XWinAttribs; XGetWindowAttributes( pBumps->dpy, pBumps->Win, &XWinAttribs ); + pBumps->start_time = time ((time_t) 0); + pScreenImage = XGetImage( pBumps->dpy, pBumps->source, 0, 0, pBumps->iWinWidth, pBumps->iWinHeight, ~0L, ZPixmap ); - XFreePixmap (pBumps->dpy, pBumps->source); - pBumps->source = 0; +/* XFreePixmap (pBumps->dpy, pBumps->source); + pBumps->source = 0;*/ XSetWindowBackground( pBumps->dpy, pBumps->Win, pBumps->aColors[ 0 ] ); XClearWindow (pBumps->dpy, pBumps->Win); @@ -389,8 +392,8 @@ static void InitBumpMap_2(Display *dpy, SBumps *pBumps) while( nSoften-- ) SoftenBumpMap( pBumps ); - free( pBumps->xColors ); - pBumps->xColors = 0; +/* free( pBumps->xColors ); + pBumps->xColors = 0;*/ } /* Soften the bump map. This is to avoid pixelated-looking ridges. @@ -558,6 +561,10 @@ bumps_init (Display *dpy, Window Win) CreateBumps( Bumps, dpy, Win ); Bumps->delay = get_integer_resource(dpy, "delay", "Integer" ); + Bumps->duration = get_integer_resource (dpy, "duration", "Seconds"); + if (Bumps->delay < 0) Bumps->delay = 0; + if (Bumps->duration < 1) Bumps->duration = 1; + Bumps->start_time = time ((time_t) 0); return Bumps; } @@ -574,7 +581,12 @@ bumps_draw (Display *dpy, Window window, void *closure) return Bumps->delay; } - + if (!Bumps->img_loader && + Bumps->start_time + Bumps->duration < time ((time_t) 0)) { + Bumps->img_loader = load_image_async_simple (0, Bumps->screen, + Bumps->Win, Bumps->source, + 0, 0); + } Execute( Bumps );