From: <be...@us...> - 2012-05-04 22:19:01
|
Revision: 1304 http://freeglut.svn.sourceforge.net/freeglut/?rev=1304&view=rev Author: beuc Date: 2012-05-04 22:18:54 +0000 (Fri, 04 May 2012) Log Message: ----------- Add new callback to reload context, pending propername Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/progs/test-shapes-gles1/test-shapes-gles1.c trunk/freeglut/freeglut/src/android/fg_main_android.c trunk/freeglut/freeglut/src/fg_callbacks.c trunk/freeglut/freeglut/src/fg_ext.c trunk/freeglut/freeglut/src/fg_internal.h trunk/freeglut/freeglut/src/fg_main.c trunk/freeglut/freeglut/src/fg_window.c Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2012-05-04 22:18:54 UTC (rev 1304) @@ -227,6 +227,10 @@ FGAPI void FGAPIENTRY glutSetVertexAttribCoord3(GLint attrib); FGAPI void FGAPIENTRY glutSetVertexAttribNormal(GLint attrib); +/* Mobile platforms lifecycle */ +FGAPI void FGAPIENTRY glutFixMyNameInitContextFunc(void (* callback)()); +FGAPI void FGAPIENTRY glutFixMyNamePauseFunc(void (* callback)()); +FGAPI void FGAPIENTRY glutFixMyNameResumeFunc(void (* callback)()); /* * GLUT API macro definitions -- the display mode definitions Modified: trunk/freeglut/freeglut/progs/test-shapes-gles1/test-shapes-gles1.c =================================================================== --- trunk/freeglut/freeglut/progs/test-shapes-gles1/test-shapes-gles1.c 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/progs/test-shapes-gles1/test-shapes-gles1.c 2012-05-04 22:18:54 UTC (rev 1304) @@ -37,6 +37,7 @@ */ #include <GL/freeglut.h> +#include <GL/freeglut_ext.h> #include <stdarg.h> #include <stdio.h> @@ -281,7 +282,8 @@ /* Program entry point */ -void init_resources() { +void init_context() { + printf("init_context\n"); fflush(stdout); glClearColor(1,1,1,1); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); @@ -320,10 +322,10 @@ glutSpecialFunc(special); glutIdleFunc(idle); glutMouseFunc(onMouseClick); + glutFixMyNameInitContextFunc(init_context); glutSetOption ( GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION ) ; - init_resources(); glutMainLoop(); #ifdef _MSC_VER Modified: trunk/freeglut/freeglut/src/android/fg_main_android.c =================================================================== --- trunk/freeglut/freeglut/src/android/fg_main_android.c 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/src/android/fg_main_android.c 2012-05-04 22:18:54 UTC (rev 1304) @@ -367,6 +367,7 @@ /* The application is being hidden, but may be restored */ LOGI("handle_cmd: APP_CMD_TERM_WINDOW"); fghPlatformCloseWindowEGL(window); + window->State.NeedToFixMyNameInitContext = GL_TRUE; fgDisplay.pDisplay.single_native_window = NULL; break; case APP_CMD_STOP: @@ -471,7 +472,6 @@ surface; in which case fgPlatformOpenWindow will no-op. */ fgPlatformOpenWindow(window, "", GL_FALSE, 0, 0, GL_FALSE, 0, 0, GL_FALSE, GL_FALSE); /* TODO: INVOKE_WCB(*window, Pause?); */ - /* TODO: INVOKE_WCB(*window, LoadResources/ContextLost/...?); */ /* TODO: INVOKE_WCB(*window, Resume?); */ } } Modified: trunk/freeglut/freeglut/src/fg_callbacks.c =================================================================== --- trunk/freeglut/freeglut/src/fg_callbacks.c 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/src/fg_callbacks.c 2012-05-04 22:18:54 UTC (rev 1304) @@ -409,4 +409,31 @@ SET_CALLBACK( MultiPassive ); } +/* + * Sets the context reload callback for the current window + */ +void FGAPIENTRY glutFixMyNameInitContextFunc( void (* callback)() ) +{ + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutFixMyNameInitContextFunc" ); + SET_CALLBACK( FixMyNameInitContext ); +} + +/* + * Sets the pause callback for the current window + */ +void FGAPIENTRY glutFixMyNamePauseFunc( void (* callback)() ) +{ + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutFixMyNamePauseFunc" ); + SET_CALLBACK( FixMyNamePause ); +} + +/* + * Sets the resume callback for the current window + */ +void FGAPIENTRY glutFixMyNameResumeFunc( void (* callback)() ) +{ + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutFixMyNameResumeFunc" ); + SET_CALLBACK( FixMyNameResume ); +} + /*** END OF FILE ***/ Modified: trunk/freeglut/freeglut/src/fg_ext.c =================================================================== --- trunk/freeglut/freeglut/src/fg_ext.c 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/src/fg_ext.c 2012-05-04 22:18:54 UTC (rev 1304) @@ -199,6 +199,9 @@ CHECK_NAME(glutInitContextProfile); CHECK_NAME(glutInitErrorFunc); CHECK_NAME(glutInitWarningFunc); + CHECK_NAME(glutFixMyNameInitContextFunc) + CHECK_NAME(glutFixMyNamePauseFunc) + CHECK_NAME(glutFixMyNameResumeFunc) #undef CHECK_NAME return NULL; Modified: trunk/freeglut/freeglut/src/fg_internal.h =================================================================== --- trunk/freeglut/freeglut/src/fg_internal.h 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/src/fg_internal.h 2012-05-04 22:18:54 UTC (rev 1304) @@ -219,6 +219,10 @@ typedef void (* FGCBMultiMotion )( int, int, int ); typedef void (* FGCBMultiPassive )( int, int, int ); +typedef void (* FGCBFixMyNameInitContext)(); +typedef void (* FGCBFixMyNamePause)(); +typedef void (* FGCBFixMyNameResume)(); + /* The global callbacks type definitions */ typedef void (* FGCBIdle )( void ); typedef void (* FGCBTimer )( int ); @@ -397,6 +401,8 @@ GLboolean NeedToResize; /* Do we need to resize the window? */ GLboolean IsFullscreen; /* is the window fullscreen? */ + + GLboolean NeedToFixMyNameInitContext; /* are OpenGL context/resources loaded? */ }; @@ -528,6 +534,11 @@ CB_MultiMotion, CB_MultiPassive, + /* Mobile platforms LifeCycle */ + CB_FixMyNameInitContext, + CB_FixMyNamePause, + CB_FixMyNameResume, + /* Presently ignored */ CB_Select, CB_OverlayDisplay, Modified: trunk/freeglut/freeglut/src/fg_main.c =================================================================== --- trunk/freeglut/freeglut/src/fg_main.c 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/src/fg_main.c 2012-05-04 22:18:54 UTC (rev 1304) @@ -104,6 +104,12 @@ SFG_Window *current_window = fgStructure.CurrentWindow; freeglut_return_if_fail( window ); + + if( window->State.NeedToFixMyNameInitContext ) { + INVOKE_WCB( *window, FixMyNameInitContext, ()); + window->State.NeedToFixMyNameInitContext = GL_FALSE; + } + freeglut_return_if_fail( FETCH_WCB ( *window, Display ) ); window->State.Redisplay = GL_FALSE; Modified: trunk/freeglut/freeglut/src/fg_window.c =================================================================== --- trunk/freeglut/freeglut/src/fg_window.c 2012-05-04 19:59:36 UTC (rev 1303) +++ trunk/freeglut/freeglut/src/fg_window.c 2012-05-04 22:18:54 UTC (rev 1304) @@ -150,6 +150,8 @@ window->Window.attribute_v_normal = -1; fgInitGL2(); + + window->State.NeedToFixMyNameInitContext = GL_TRUE; } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |