X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fandroid%2Ffg_main_android.c;h=15d31e62394f347e777ef0668d71c002d0ab24dc;hb=4a451851ec51ea7c3b79534fa5faebadceedf4df;hp=37d3a212432b86d8d9f079c1a3876301aade7f4a;hpb=fb19747bd26fdfec6dbaa21b9eda321c73a0eb6b;p=freeglut diff --git a/src/android/fg_main_android.c b/src/android/fg_main_android.c index 37d3a21..15d31e6 100644 --- a/src/android/fg_main_android.c +++ b/src/android/fg_main_android.c @@ -28,7 +28,6 @@ #include #include "fg_internal.h" -#include "fg_main.h" #include "egl/fg_window_egl.h" #include @@ -139,22 +138,6 @@ static unsigned char key_ascii(struct android_app* app, AInputEvent* event) { return ascii; } -/* - * Request a window resize - */ -void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) -{ - fprintf(stderr, "fgPlatformReshapeWindow: STUB\n"); -} - -/* - * A static helper function to execute display callback for a window - */ -void fgPlatformDisplayWindow ( SFG_Window *window ) -{ - fghRedrawWindow ( window ) ; -} - unsigned long fgPlatformSystemTime ( void ) { struct timeval now; @@ -228,7 +211,8 @@ int32_t handle_input(struct android_app* app, AInputEvent* event) { int32_t action = AMotionEvent_getAction(event) & AMOTION_EVENT_ACTION_MASK; /* Pointer ID for clicks */ int32_t pidx = AMotionEvent_getAction(event) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; - /* TODO: Handle multi-touch; also handle multiple sources */ + /* TODO: Handle multi-touch; also handle multiple sources/devices */ + /* cf. http://sourceforge.net/mailarchive/forum.php?thread_name=20120518071314.GA28061%40perso.beuc.net&forum_name=freeglut-developer */ if (0) { LOGI("motion action=%d index=%d source=%d", action, pidx, source); int count = AMotionEvent_getPointerCount(event); @@ -367,7 +351,7 @@ void handle_cmd(struct android_app* app, int32_t cmd) { /* The application is being hidden, but may be restored */ LOGI("handle_cmd: APP_CMD_TERM_WINDOW"); fghPlatformCloseWindowEGL(window); - window->State.NeedToFixMyNameInitContext = GL_TRUE; + window->State.NeedToInitContext = GL_TRUE; fgDisplay.pDisplay.single_native_window = NULL; break; case APP_CMD_STOP: @@ -451,6 +435,8 @@ void fgPlatformProcessSingleEvent ( void ) /* If we're not in RESUME state, Android paused us, so wait */ struct android_app* app = fgDisplay.pDisplay.app; if (app->destroyRequested != 1 && app->activityState != APP_CMD_RESUME) { + INVOKE_WCB(*window, Pause, ()); + int FOREVER = -1; while (app->destroyRequested != 1 && (app->activityState != APP_CMD_RESUME)) { if ((ident=ALooper_pollOnce(FOREVER, NULL, &events, (void**)&source)) >= 0) { @@ -471,11 +457,12 @@ void fgPlatformProcessSingleEvent ( void ) we'll be paused but not stopped, and keep the current 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, Resume?); */ - if (!FETCH_WCB(*window, FixMyNameInitContext) - fgWarning("Resuming application, but no callback to reload context resources (glutFixMyNameInitContextFunc)"); + + if (!FETCH_WCB(*window, InitContext)) + fgWarning("Resuming application, but no callback to reload context resources (glutInitContextFunc)"); } + + INVOKE_WCB(*window, Resume, ()); } }