* Process the next main command. */
| 1124 | * Process the next main command. |
| 1125 | */ |
| 1126 | static void engine_handle_cmd(struct android_app* app, int32_t cmd) { |
| 1127 | struct engine* engine = (struct engine*)app->userData; |
| 1128 | switch (cmd) { |
| 1129 | case APP_CMD_SAVE_STATE: |
| 1130 | // The system has asked us to save our current state. Do so. |
| 1131 | engine->app->savedState = malloc(sizeof(struct saved_state)); |
| 1132 | *((struct saved_state*)engine->app->savedState) = engine->state; |
| 1133 | engine->app->savedStateSize = sizeof(struct saved_state); |
| 1134 | break; |
| 1135 | case APP_CMD_INIT_WINDOW: |
| 1136 | // The window is being shown, get it ready. |
| 1137 | if (engine->app->window != NULL) { |
| 1138 | |
| 1139 | engine_init_display(engine); |
| 1140 | |
| 1141 | if (bSuspended == true) { |
| 1142 | glViewport(0, 0, engine->width, engine->height); |
| 1143 | Game->textureResurrect(); |
| 1144 | bSuspended = false; |
| 1145 | } |
| 1146 | } |
| 1147 | break; |
| 1148 | case APP_CMD_TERM_WINDOW: |
| 1149 | bSuspended = true; |
| 1150 | Game->textureKill(); |
| 1151 | // The window is being hidden or closed, clean it up. |
| 1152 | engine_term_display(engine, false); |
| 1153 | break; |
| 1154 | case APP_CMD_RESUME: |
| 1155 | break; |
| 1156 | case APP_CMD_GAINED_FOCUS: |
| 1157 | // When our app gains focus, we start monitoring the accelerometer. |
| 1158 | if (engine->accelerometerSensor != NULL && activity.isAccelerometerActive()) { |
| 1159 | ASensorEventQueue_enableSensor(engine->sensorEventQueue, |
| 1160 | engine->accelerometerSensor); |
| 1161 | // We'd like to get 30 events per second (in us). |
| 1162 | ASensorEventQueue_setEventRate(engine->sensorEventQueue, |
| 1163 | engine->accelerometerSensor, (1000L/30)*1000); |
| 1164 | } |
| 1165 | |
| 1166 | engine->animating = 1; |
| 1167 | break; |
| 1168 | case APP_CMD_LOST_FOCUS: |
| 1169 | // When our app loses focus, we stop monitoring the accelerometer. |
| 1170 | // This is to avoid consuming battery while not being used. |
| 1171 | if (engine->accelerometerSensor != NULL) { |
| 1172 | ASensorEventQueue_disableSensor(engine->sensorEventQueue, |
| 1173 | engine->accelerometerSensor); |
| 1174 | } |
| 1175 | |
| 1176 | // stop animating. |
| 1177 | engine->animating = 0; |
| 1178 | break; |
| 1179 | case APP_CMD_PAUSE: |
| 1180 | break; |
| 1181 | } |
| 1182 | } |
| 1183 |
nothing calls this directly
no test coverage detected