X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fkumppa.c;h=fa908c06385355c6c0a5f0e44b5aea9cd8e7541b;hb=6a1da724858673ac40aa13a9612340d8bed8c7b9;hp=953f3c30e1920df7c315f505a6881bc7f9fc0a68;hpb=481b95e2617b69e6fd4444432747d7e1e0c3dc85;p=xscreensaver diff --git a/hacks/kumppa.c b/hacks/kumppa.c index 953f3c30..fa908c06 100644 --- a/hacks/kumppa.c +++ b/hacks/kumppa.c @@ -41,16 +41,20 @@ from the X Consortium. #include #include "screenhack.h" -#ifdef HAVE_XDBE_EXTENSION -# include -#endif /* HAVE_XDBE_EXTENSION */ +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION +# include "xdbe.h" +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ char *progclass="Kumppa"; char *defaults [] ={ ".background: black", "*speed: 0.1", - "*delay: 0", + "*delay: 10000", +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION + /* leave this off by default, since it slows things down. -- jwz. */ + "*useDBE: False", +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ 0 }; @@ -58,13 +62,13 @@ XrmOptionDescRec options [] = { {"-delay",".delay",XrmoptionSepArg,0}, {"-speed",".speed",XrmoptionSepArg,0}, {"-random",".random",XrmoptionIsArg,0}, -#ifdef HAVE_XDBE_EXTENSION +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION {"-dbuf",".dbuf",XrmoptionIsArg,0}, -#endif /* HAVE_XDBE_EXTENSION */ +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ {0,0,0,0} }; -const char colors[96]= +const unsigned char colors[96]= {0,0,255, 0,51,255, 0,102,255, 0,153,255, 0,204,255, 0,255,255,0,255,204, 0,255,153, 0,255,102, 0,255,51, 0,255,0, 51,255,0, 102,255,0, 153,255,0, 204,255,0, @@ -88,9 +92,9 @@ static int sizx,sizy; static int midx,midy; static unsigned long delay; static Bool cosilines=True; -#ifdef HAVE_XDBE_EXTENSION +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION static Bool usedouble=False; -#endif /* HAVE_XDBE_EXTENSION */ +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ static int *Xrotations; static int *Yrotations; @@ -145,7 +149,7 @@ int x,y; int dx,dy; rx=Xrottable[stateX+1]-Xrottable[stateX]; -ry=Yrottable[stateX+1]-Yrottable[stateY]; +ry=Yrottable[stateY+1]-Yrottable[stateY]; for (x=0;x<=rx;x++) @@ -186,7 +190,7 @@ if (stateY==rotsizeY) stateY=0; Bool make_rots(double xspeed,double yspeed) { -int a,b,c,f,g,j,k,l; +int a,b,c,f,g,j,k=0,l; double m,om,ok; double d,ix,iy; int maxi; @@ -377,19 +381,15 @@ XSetGraphicsExposures(dpy,cgc,False); if (get_string_resource("random","String")!=NULL && get_string_resource("random","String")[0]!=0) cosilines=False; -#ifdef HAVE_XDBE_EXTENSION -if (get_string_resource("dbuf","String")!=NULL && get_string_resource("dbuf","String")[0]!=0) usedouble=True; -if (usedouble) - { - XdbeQueryExtension(dpy,&n,&i); - if (n==0 && i==0) - { - fprintf(stderr,"Double buffer extension not supported!\n"); - usedouble=False; - } - } -if (usedouble) win[1]=XdbeAllocateBackBufferName(dpy,win[0],XdbeUndefined); -#endif /* HAVE_XDBE_EXTENSION */ +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION + usedouble = True; + win[1] = xdbe_get_backbuffer (dpy, win[0], XdbeUndefined); + if (!win[1]) + { + usedouble = False; + win[1] = win[0]; + } +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ delay=get_integer_resource("delay","Integer"); rspeed=get_float_resource("speed","Float"); @@ -417,24 +417,24 @@ return True; void screenhack(Display *d, Window w) { -#ifdef HAVE_XDBE_EXTENSION +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION XdbeSwapInfo xdswp; -#endif /* HAVE_XDBE_EXTENSION */ -int a,b,c,e; +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ +int a,b,c=0,e; float f; dpy=d; win[0]=w; if (!InitializeAll()) return; -#ifdef HAVE_XDBE_EXTENSION +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION if (usedouble) { xdswp.swap_action=XdbeUndefined; xdswp.swap_window=win[0]; } else -#endif /* HAVE_XDBE_EXTENSION */ +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ win[1]=win[0]; while (0==0) @@ -472,10 +472,11 @@ while (0==0) } XFillRectangle(dpy,win[0],fgc[32],midx-2,midy-2,4,4); rotate(); -#ifdef HAVE_XDBE_EXTENSION +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION if (usedouble) XdbeSwapBuffers(dpy,&xdswp,1); -#endif /* HAVE_XDBE_EXTENSION */ - XSync(dpy,True); +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ + XSync(dpy, False); + screenhack_handle_events (dpy); if (delay) usleep (delay); } }