In testdyngl.c the event type was being anded (&) with SDL_KEYDOWN and if the result was none zero the program was quiting. This is very weird because it was

working earlier this week.

I added some more trace code to SDL_x11events.c

In SDL_X11opengl.c I modified SDL_GL_GetSwapInterval() so that it returns a pretty good value even if you have the SGI swap extension instead of the MESA swap
extension. I just saved the value you set and return it too you.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402744
This commit is contained in:
Bob Pendleton 2008-03-07 23:57:15 +00:00
parent 196aaf9bc6
commit d8da8f7c27
3 changed files with 23 additions and 5 deletions

View File

@ -43,8 +43,9 @@ X11_DispatchEvent(_THIS)
/* filter events catchs XIM events and sends them to the correct
handler */
if (XFilterEvent(&xevent, None) == True) {
#ifdef DEBUG_XEVENTS
printf("Filtered event of type = 0x%X\n", xevent.type);
#if 0
printf("Filtered event type = %d display = %d window = %d\n",
xevent.type, xevent.xany.display, xevent.xany.window);
#endif
return;
}
@ -73,6 +74,10 @@ X11_DispatchEvent(_THIS)
return;
}
#if 0
printf("type = %d display = %d window = %d\n",
xevent.type, xevent.xany.display, xevent.xany.window);
#endif
switch (xevent.type) {
/* Gaining mouse coverage? */

View File

@ -472,6 +472,16 @@ X11_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
return (status);
}
/*
0 is a valid argument to glxSwapIntervalMESA and setting it to 0
with the MESA version of the extension will undo the effect of a
previous call with a value that is greater than zero (or at least
that is what the FM says. OTOH, 0 is an invalid argument to
glxSwapIntervalSGI and it returns an error if you call it with 0 as
an argument.
*/
static int swapinterval = -1;
int
X11_GL_SetSwapInterval(_THIS, int interval)
{
@ -482,12 +492,16 @@ X11_GL_SetSwapInterval(_THIS, int interval)
if (status != 0) {
SDL_SetError("glxSwapIntervalMESA failed");
status = -1;
} else {
swapinterval = interval;
}
} else if (_this->gl_data->glXSwapIntervalSGI) {
status = _this->gl_data->glXSwapIntervalSGI(interval);
if (status != 0) {
SDL_SetError("glxSwapIntervalSGI failed");
status = -1;
} else {
swapinterval = interval;
}
} else {
SDL_Unsupported();
@ -502,8 +516,7 @@ X11_GL_GetSwapInterval(_THIS)
if (_this->gl_data->glXGetSwapIntervalMESA) {
return _this->gl_data->glXGetSwapIntervalMESA();
} else {
SDL_Unsupported();
return -1;
return swapinterval;
}
}

View File

@ -180,7 +180,7 @@ main(int argc, char *argv[])
SDL_GL_SwapBuffers();
while (SDL_PollEvent(&event)) {
if (event.type & SDL_KEYDOWN)
if (event.type == SDL_KEYDOWN)
done = 1;
}