X and performance

memset(screen->pixels, pixel++, 640 * 480 * bpp);
SDL_UpdateRect(screen, 0, 0, 640, 480);

Why is this so damn slow under X?
Is there some way I can get SDL to use MIT-SHM?
Maybe even use the False in XShmPutImage() (or whatever) so that the
image is printed
while I do ohter things?