Screensaver screen tearing
It's been my experience that tearing is usually the result of drawing during screen refresh. If the window is double-buffered, the buffers are being swapped in the middle of a (video) refresh. This was happening when I was using the "really slick screensavers" code ported to OpenGL by Tugrul Galatali (with many thanks, BTW). So I defined GLX_GLEXT_PROTOTYPES, included <GL/glxext.h>, and a call to "glXSwapIntervalSGI(1);" at the bottom of the createWindow() function. This ensured only a single "swapbuffer" can occur per video refresh. Drawing faster than the video refresh rate generally yields diminishing returns (visually & computationally). If your screen refresh rate is 60hz, calling glXSwapIntervalSGI(2) will yield 30 fps, (4) for 15 fps, etc.
Hope that helps,