X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fkumppa.c;h=7e8839265c602c46ed0ffe957c49f8ed30b13c27;hb=a719ec12b8b2563112366a8ac3196816fd64d2c7;hp=953f3c30e1920df7c315f505a6881bc7f9fc0a68;hpb=481b95e2617b69e6fd4444432747d7e1e0c3dc85;p=xscreensaver diff --git a/hacks/kumppa.c b/hacks/kumppa.c index 953f3c30..7e883926 100644 --- a/hacks/kumppa.c +++ b/hacks/kumppa.c @@ -41,9 +41,9 @@ 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"; @@ -51,6 +51,10 @@ char *defaults [] ={ ".background: black", "*speed: 0.1", "*delay: 0", +#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,9 +62,9 @@ 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} }; @@ -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); } }