diff options
| author | Claudio Ciccani <klan@directfb.org> | 2008-02-08 12:35:08 +0100 | 
|---|---|---|
| committer | Claudio Ciccani <klan@directfb.org> | 2008-02-08 12:35:08 +0100 | 
| commit | c231f8ff3577ec579464da7259bf24c304a027fc (patch) | |
| tree | c89a9daf1f24fda9760e8bad4ab8cfe54e9f024b /src | |
| parent | 5edede94bb506c358f1ee1450504c584c8f665ee (diff) | |
[glut-directfb] Fixed displaying of single buffered window.
Diffstat (limited to 'src')
| -rw-r--r-- | src/glut/directfb/internal.h | 3 | ||||
| -rw-r--r-- | src/glut/directfb/window.c | 22 | 
2 files changed, 22 insertions, 3 deletions
diff --git a/src/glut/directfb/internal.h b/src/glut/directfb/internal.h index 47311c9342..55c4b5ce28 100644 --- a/src/glut/directfb/internal.h +++ b/src/glut/directfb/internal.h @@ -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; diff --git a/src/glut/directfb/window.c b/src/glut/directfb/window.c index c8174d795e..62cf8bb33e 100644 --- a/src/glut/directfb/window.c +++ b/src/glut/directfb/window.c @@ -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;  | 
