Hi, When experimenting with vsync under GNU/Linux, I noticed that SDL_GL_SWAP_CONTROL was an "OpenGL attribute [] unsupported on this system".
(I was using Pygame and first thought it was a pygame- or X11-specific issue, but then I found out that I could use vsync with Pyglet so it definitely should have worked). The bug is due to (AFAICT) an implementation oversight in video/x11/SDL_x11gl.c: it tries to load 'glXSwapIntervalMESA' or 'glXSwapIntervalSGI' dynamically from '/usr/lib/libGL.so.1', while it should load them through 'glXGetProcAddressARB'. The following tiny patch does just that, and I now get my smooth scrolling :) What do you think? -- Sylvain
--- SDL_x11gl.c-orig 2010-05-23 20:37:14.000000000 +0200 +++ SDL_x11gl.c 2010-05-23 20:37:45.000000000 +0200 @@ -530,9 +530,9 @@ this->gl_data->glXQueryExtensionsString = (const char *(*)(Display *, int)) GL_LoadFunction(handle, "glXQueryExtensionsString"); this->gl_data->glXSwapIntervalSGI = - (int (*)(int)) GL_LoadFunction(handle, "glXSwapIntervalSGI"); + (int (*)(int)) this->gl_data->glXGetProcAddress("glXSwapIntervalSGI"); this->gl_data->glXSwapIntervalMESA = - (GLint (*)(unsigned)) GL_LoadFunction(handle, "glXSwapIntervalMESA"); + (GLint (*)(unsigned)) this->gl_data->glXGetProcAddress("glXSwapIntervalMESA"); if ( (this->gl_data->glXChooseVisual == NULL) || (this->gl_data->glXCreateContext == NULL) ||