X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_main.c;h=c3bccdc39a1efe9f2e2abc5d680cc2d015cdd38d;hb=84bbdfc8e7dfb2e220a4d155159be91e88ea9433;hp=24de1196917f8723ba7b9c1c06b51b229c924f84;hpb=1b5ee849ba61b667aeba474a7e03406196478bee;p=freeglut diff --git a/src/fg_main.c b/src/fg_main.c index 24de119..c3bccdc 100644 --- a/src/fg_main.c +++ b/src/fg_main.c @@ -88,6 +88,7 @@ static void fghReshapeWindow ( SFG_Window *window, int width, int height ) * the already-drawn part does not get drawn again and things look funny. * But without this we get this bad behaviour whenever we resize the * window. + * DN: Hmm.. the above sounds like a concern only in single buffered mode... */ window->State.Redisplay = GL_TRUE; @@ -104,6 +105,12 @@ void fghRedrawWindow ( SFG_Window *window ) SFG_Window *current_window = fgStructure.CurrentWindow; freeglut_return_if_fail( window ); + + if( window->State.NeedToInitContext ) { + INVOKE_WCB( *window, InitContext, ()); + window->State.NeedToInitContext = GL_FALSE; + } + freeglut_return_if_fail( FETCH_WCB ( *window, Display ) ); window->State.Redisplay = GL_FALSE; @@ -114,13 +121,17 @@ void fghRedrawWindow ( SFG_Window *window ) if( window->State.NeedToResize ) { + /* Set need to resize to false before calling fghReshapeWindow, otherwise + in the case the user's reshape callback calls glutReshapeWindow, + his request would get canceled after fghReshapeWindow gets called. + */ + window->State.NeedToResize = GL_FALSE; + fghReshapeWindow( window, window->State.Width, window->State.Height ); - - window->State.NeedToResize = GL_FALSE; } INVOKE_WCB( *window, Display, ( ) );