Hi guys,
I'm working on a port of something and the application runs/renders for usually a couple of seconds, then just completely freezes. About 95% of the time it freezes when glSwapBuffers() is called. Does anyone know what would cause this behaviour?
The amount of time the app runs for is pretty random, it'll be anywhere between 1 second and like 20 seconds, but it'll always freeze. (I can telnet in and kill still though, so it doesn't freeze the whole GP2X...)
Thoughts?
I tried taking a look at the actual glSwapBuffers() function in gpu940's egl.c, which looks like this:
The line that caught my eye was the gpuWaitDisplay() line. I tried commenting it out, but it didn't seem to have any effect. (I could have screwed that up though, I dunno.)
Any help anyone could provide me with would be greatly appreciated. Thanks!
I'm working on a port of something and the application runs/renders for usually a couple of seconds, then just completely freezes. About 95% of the time it freezes when glSwapBuffers() is called. Does anyone know what would cause this behaviour?
The amount of time the app runs for is pretty random, it'll be anywhere between 1 second and like 20 seconds, but it'll always freeze. (I can telnet in and kill still though, so it doesn't freeze the whole GP2X...)
Thoughts?
I tried taking a look at the actual glSwapBuffers() function in gpu940's egl.c, which looks like this:
Code:
GLboolean glSwapBuffers(void)
{
if (active_buffer == ~0U) {
active_buffer = 0;
} else {
if (gpuOK != gpuShowBuf(buffers[active_buffer].out, true)) {
return GL_FALSE;
}
// wait until this buffer is actually on display
gpuWaitDisplay();
if (++ active_buffer >= sizeof_array(buffers)) {
active_buffer = 0;
}
}
if (gpuOK != gpuSetBuf(gpuOutBuffer, buffers[active_buffer].out, true)) {
return GL_FALSE;
}
if (buffers[active_buffer].depth && gpuOK != gpuSetBuf(gpuZBuffer, buffers[active_buffer].depth, true)) {
return GL_FALSE;
}
return GL_TRUE;
}
The line that caught my eye was the gpuWaitDisplay() line. I tried commenting it out, but it didn't seem to have any effect. (I could have screwed that up though, I dunno.)
Any help anyone could provide me with would be greatly appreciated. Thanks!