[glut-directfb] Fixed displaying of single buffered window.

This commit is contained in:
Claudio Ciccani
2008-02-08 12:35:08 +01:00
parent 5edede94bb
commit c231f8ff35
2 changed files with 22 additions and 3 deletions
+3
View File
@@ -62,6 +62,9 @@ typedef struct __GlutWindow_s {
IDirectFBSurface *surface;
IDirectFBGL *gl;
/* display mode */
GLenum mode;
/* cursor position in fullscreen mode */
int cx;
int cy;
+19 -3
View File
@@ -66,6 +66,9 @@ __glutCreateWindow( GLboolean fullscreen )
case 8:
config.pixelformat = DSPF_RGB332;
break;
case 12:
config.pixelformat = DSPF_ARGB4444;
break;
case 15:
config.pixelformat = DSPF_ARGB1555;
break;
@@ -109,7 +112,7 @@ __glutCreateWindow( GLboolean fullscreen )
if (joystick)
joystick->AttachEventBuffer( joystick, events );
new->visible = GL_TRUE;
new->visible = GL_TRUE;
}
else {
DFBWindowDescription dsc;
@@ -160,11 +163,12 @@ __glutCreateWindow( GLboolean fullscreen )
DWET_BUTTONDOWN | DWET_BUTTONUP |
DWET_ENTER | DWET_LEAVE |
DWET_MOTION | DWET_SIZE );
new->req.flags |= WINDOW_REQUEST_SHOW;
}
new->mode = g_display_mode;
new->reshape = GL_TRUE;
new->visibility = GL_TRUE;
new->redisplay = GL_TRUE;
@@ -220,7 +224,8 @@ __glutHandleWindows( void )
__GlutWindow *cur = g_stack;
while (cur) {
__GlutWindow *next = cur->next;
__GlutWindow *next = cur->next;
GLboolean displayed = GL_FALSE;
if (cur->window && cur->req.flags) {
if (cur == g_current)
@@ -291,18 +296,29 @@ __glutHandleWindows( void )
cur->surface->GetSize( cur->surface, &w, &h );
__glutSetWindow( cur );
reshape_func( w, h );
displayed = GL_TRUE;
}
if (cur->visibility && visibility_func) {
g_idle = GL_FALSE;
__glutSetWindow( cur );
visibility_func( cur->visible ? GLUT_VISIBLE : GLUT_NOT_VISIBLE );
displayed = GL_TRUE;
}
if (cur->redisplay && display_func) {
g_idle = GL_FALSE;
__glutSetWindow( cur );
display_func();
displayed = GL_TRUE;
}
if (displayed && cur->window && cur->visible) {
if (!(cur->mode & GLUT_DOUBLE)) {
cur->gl->Unlock( cur->gl );
cur->surface->Flip( cur->surface, NULL, 0 );
cur->gl->Lock( cur->gl );
}
}
cur->reshape = GL_FALSE;