Home | History | Annotate | Download | only in jni

Lines Matching refs:engine

44 struct engine {
63 static int engine_init_display(struct engine* engine) {
99 ANativeWindow_setBuffersGeometry(engine->app->window, 0, 0, format);
101 surface = eglCreateWindowSurface(display, config, engine->app->window, NULL);
112 engine->display = display;
113 engine->context = context;
114 engine->surface = surface;
115 engine->width = w;
116 engine->height = h;
117 engine->state.angle = 0;
131 static void engine_draw_frame(struct engine* engine) {
132 if (engine->display == NULL) {
138 glClearColor(((float)engine->state.x)/engine->width, engine->state.angle,
139 ((float)engine->state.y)/engine->height, 1);
142 eglSwapBuffers(engine->display, engine->surface);
148 static void engine_term_display(struct engine* engine) {
149 if (engine->display != EGL_NO_DISPLAY) {
150 eglMakeCurrent(engine->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
151 if (engine->context != EGL_NO_CONTEXT) {
152 eglDestroyContext(engine->display, engine->context);
154 if (engine->surface != EGL_NO_SURFACE) {
155 eglDestroySurface(engine->display, engine->surface);
157 eglTerminate(engine->display);
159 engine->animating = 0;
160 engine->display = EGL_NO_DISPLAY;
161 engine->context = EGL_NO_CONTEXT;
162 engine->surface = EGL_NO_SURFACE;
169 struct engine* engine = (struct engine*)app->userData;
171 engine->animating = 1;
172 engine->state.x = AMotionEvent_getX(event, 0);
173 engine->state.y = AMotionEvent_getY(event, 0);
183 struct engine* engine = (struct engine*)app->userData;
187 engine->app->savedState = malloc(sizeof(struct saved_state));
188 *((struct saved_state*)engine->app->savedState) = engine->state;
189 engine->app->savedStateSize = sizeof(struct saved_state);
193 if (engine->app->window != NULL) {
194 engine_init_display(engine);
195 engine_draw_frame(engine);
200 engine_term_display(engine);
204 if (engine->accelerometerSensor != NULL) {
205 ASensorEventQueue_enableSensor(engine->sensorEventQueue,
206 engine->accelerometerSensor);
208 ASensorEventQueue_setEventRate(engine->sensorEventQueue,
209 engine->accelerometerSensor, (1000L/60)*1000);
215 if (engine->accelerometerSensor != NULL) {
216 ASensorEventQueue_disableSensor(engine->sensorEventQueue,
217 engine->accelerometerSensor);
220 engine->animating = 0;
221 engine_draw_frame(engine);
232 struct engine engine;
237 memset(&engine, 0, sizeof(engine));
238 state->userData = &engine;
241 engine.app = state;
244 engine.sensorManager = ASensorManager_getInstance();
245 engine.accelerometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager,
247 engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager,
252 engine.state = *(struct saved_state*)state->savedState;
266 while ((ident=ALooper_pollAll(engine.animating ? 0 : -1, NULL, &events,
276 if (engine.accelerometerSensor != NULL) {
278 while (ASensorEventQueue_getEvents(engine.sensorEventQueue,
289 engine_term_display(&engine);
294 if (engine.animating) {
296 engine.state.angle += .01f;
297 if (engine.state.angle > 1) {
298 engine.state.angle = 0;
303 engine_draw_frame(&engine);