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:
parent
196aaf9bc6
commit
d8da8f7c27
3 changed files with 23 additions and 5 deletions
|
@ -43,8 +43,9 @@ X11_DispatchEvent(_THIS)
|
||||||
/* filter events catchs XIM events and sends them to the correct
|
/* filter events catchs XIM events and sends them to the correct
|
||||||
handler */
|
handler */
|
||||||
if (XFilterEvent(&xevent, None) == True) {
|
if (XFilterEvent(&xevent, None) == True) {
|
||||||
#ifdef DEBUG_XEVENTS
|
#if 0
|
||||||
printf("Filtered event of type = 0x%X\n", xevent.type);
|
printf("Filtered event type = %d display = %d window = %d\n",
|
||||||
|
xevent.type, xevent.xany.display, xevent.xany.window);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -73,6 +74,10 @@ X11_DispatchEvent(_THIS)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
printf("type = %d display = %d window = %d\n",
|
||||||
|
xevent.type, xevent.xany.display, xevent.xany.window);
|
||||||
|
#endif
|
||||||
switch (xevent.type) {
|
switch (xevent.type) {
|
||||||
|
|
||||||
/* Gaining mouse coverage? */
|
/* Gaining mouse coverage? */
|
||||||
|
|
|
@ -472,6 +472,16 @@ X11_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
|
||||||
return (status);
|
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
|
int
|
||||||
X11_GL_SetSwapInterval(_THIS, int interval)
|
X11_GL_SetSwapInterval(_THIS, int interval)
|
||||||
{
|
{
|
||||||
|
@ -482,12 +492,16 @@ X11_GL_SetSwapInterval(_THIS, int interval)
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
SDL_SetError("glxSwapIntervalMESA failed");
|
SDL_SetError("glxSwapIntervalMESA failed");
|
||||||
status = -1;
|
status = -1;
|
||||||
|
} else {
|
||||||
|
swapinterval = interval;
|
||||||
}
|
}
|
||||||
} else if (_this->gl_data->glXSwapIntervalSGI) {
|
} else if (_this->gl_data->glXSwapIntervalSGI) {
|
||||||
status = _this->gl_data->glXSwapIntervalSGI(interval);
|
status = _this->gl_data->glXSwapIntervalSGI(interval);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
SDL_SetError("glxSwapIntervalSGI failed");
|
SDL_SetError("glxSwapIntervalSGI failed");
|
||||||
status = -1;
|
status = -1;
|
||||||
|
} else {
|
||||||
|
swapinterval = interval;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
SDL_Unsupported();
|
SDL_Unsupported();
|
||||||
|
@ -502,8 +516,7 @@ X11_GL_GetSwapInterval(_THIS)
|
||||||
if (_this->gl_data->glXGetSwapIntervalMESA) {
|
if (_this->gl_data->glXGetSwapIntervalMESA) {
|
||||||
return _this->gl_data->glXGetSwapIntervalMESA();
|
return _this->gl_data->glXGetSwapIntervalMESA();
|
||||||
} else {
|
} else {
|
||||||
SDL_Unsupported();
|
return swapinterval;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -180,7 +180,7 @@ main(int argc, char *argv[])
|
||||||
SDL_GL_SwapBuffers();
|
SDL_GL_SwapBuffers();
|
||||||
|
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
if (event.type & SDL_KEYDOWN)
|
if (event.type == SDL_KEYDOWN)
|
||||||
done = 1;
|
done = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue