in agdk/agde/endless-tunnel/endless-tunnel/Android/app/src/main/cpp/native_engine.cpp [141:216]
void NativeEngine::HandleCommand(int32_t cmd) {
SceneManager *mgr = SceneManager::GetInstance();
VLOGD("NativeEngine: handling command %d.", cmd);
switch (cmd) {
case APP_CMD_SAVE_STATE:
// The system has asked us to save our current state.
VLOGD("NativeEngine: APP_CMD_SAVE_STATE");
mApp->savedState = malloc(sizeof(mState));
*((NativeEngineSavedState *) mApp->savedState) = mState;
mApp->savedStateSize = sizeof(mState);
break;
case APP_CMD_INIT_WINDOW:
// We have a window!
VLOGD("NativeEngine: APP_CMD_INIT_WINDOW");
if (mApp->window != NULL) {
mHasWindow = true;
}
break;
case APP_CMD_TERM_WINDOW:
// The window is going away -- kill the surface
VLOGD("NativeEngine: APP_CMD_TERM_WINDOW");
KillSurface();
mHasWindow = false;
break;
case APP_CMD_GAINED_FOCUS:
VLOGD("NativeEngine: APP_CMD_GAINED_FOCUS");
mHasFocus = true;
break;
case APP_CMD_LOST_FOCUS:
VLOGD("NativeEngine: APP_CMD_LOST_FOCUS");
mHasFocus = false;
break;
case APP_CMD_PAUSE:
VLOGD("NativeEngine: APP_CMD_PAUSE");
mgr->OnPause();
break;
case APP_CMD_RESUME:
VLOGD("NativeEngine: APP_CMD_RESUME");
mgr->OnResume();
break;
case APP_CMD_STOP:
VLOGD("NativeEngine: APP_CMD_STOP");
mIsVisible = false;
break;
case APP_CMD_START:
VLOGD("NativeEngine: APP_CMD_START");
mIsVisible = true;
break;
case APP_CMD_WINDOW_RESIZED:
case APP_CMD_CONFIG_CHANGED:
VLOGD("NativeEngine: %s", cmd == APP_CMD_WINDOW_RESIZED ?
"APP_CMD_WINDOW_RESIZED" : "APP_CMD_CONFIG_CHANGED");
// Window was resized or some other configuration changed.
// Note: we don't handle this event because we check the surface dimensions
// every frame, so that's how we know it was resized. If you are NOT doing that,
// then you need to handle this event!
break;
case APP_CMD_LOW_MEMORY:
VLOGD("NativeEngine: APP_CMD_LOW_MEMORY");
// system told us we have low memory. So if we are not visible, let's
// cooperate by deallocating all of our graphic resources.
if (!mHasWindow) {
VLOGD("NativeEngine: trimming memory footprint (deleting GL objects).");
KillGLObjects();
}
break;
default:
VLOGD("NativeEngine: (unknown command).");
break;
}
VLOGD("NativeEngine: STATUS: F%d, V%d, W%d, EGL: D %p, S %p, CTX %p, CFG %p",
mHasFocus, mIsVisible, mHasWindow, mEglDisplay, mEglSurface, mEglContext,
mEglConfig);
}