void display() { if (recordVideo) { SceneManager_pump(1.0 / 25.0, evts); } else { SceneManager_pump(timenow - ltime, evts); } if (hasQuit) return; SceneManager_eventsZero(evts); if (recordVideo) { if (buff == 0) buff = malloc(width * height * 3); glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buff); fwrite(buff, width * height *3, 1, videoFile); } glutSwapBuffers(); ltime = getNanoTime(); }
void gameLoop() { if (glutGetWindow() == 0) { OS_quit(); } timenow = getNanoTime(); while (timenow - ltime < (frameTime)) { timenow = getNanoTime(); } glutPostRedisplay(); }
MovementQuadruple::MovementQuadruple(unsigned int newThrust, float newRoll, float newPitch, float newYawrate) { this->thrust = newThrust; this->roll = newRoll; this->pitch = newPitch; this->yawrate = newYawrate; this->timestamp = getNanoTime(); }
USING_YJJ_NAMESPACE #define REDIS_DIRECT_USAGE string JournalHandler::getDefaultName(const string& prefix) { std::stringstream ss; ss << prefix << "_" << getNanoTime(); return ss.str(); }
static void mumble_audiothread(MumbleClient *client) { while (thread_isConnected(client)) { pthread_mutex_lock(&client->lock); while (client->connected && client->audio_job == NULL) pthread_cond_wait(&client->cond, &client->lock); pthread_mutex_unlock(&client->lock); // Signal ended up being a disconnect if (!thread_isConnected(client)) { break; } while (thread_isPlaying(client)) { unsigned long long start, stop, diff; start = getNanoTime(); pthread_mutex_lock(&client->lock); audio_transmission_event(client); pthread_mutex_unlock(&client->lock); struct timespec sleep, remain; stop = getNanoTime(); diff = fabs((double) stop - start); sleep.tv_nsec = 10000000LL - diff; while (nanosleep(&sleep, &remain) != 0) { sleep.tv_sec = remain.tv_sec; sleep.tv_nsec = remain.tv_nsec; } } } }
void gameLoop() { SDL_Event event; /* Grab all the events off the queue. */ while( SDL_PollEvent( &event ) ) { int k = -1; switch( event.type ) { case SDL_MOUSEMOTION: mouseX = event.motion.x; mouseY = event.motion.y; break; case SDL_MOUSEBUTTONDOWN: SceneManager_eventsAdd(evts, SCENEEVENT_TYPE_FINGERDOWN, 0, event.button.x, event.button.y); break; case SDL_MOUSEBUTTONUP: SceneManager_eventsAdd(evts, SCENEEVENT_TYPE_FINGERUP, 0, event.button.x, event.button.y); break; case SDL_VIDEORESIZE: reshape(event.resize.w, event.resize.h); break; case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_UP: k = OS_key_up; break; case SDLK_DOWN: k = OS_key_down; break; case SDLK_LEFT: k = OS_key_left; break; case SDLK_RIGHT: k = OS_key_right; break; case SDLK_a: k = OS_key_rol; break; case SDLK_d: k = OS_key_ror; break; case SDLK_RETURN: case SDLK_KP_ENTER: k = OS_key_ok; break; case SDLK_ESCAPE: k = OS_key_cancel; break; default: break; } if (k != -1) SceneManager_eventsAdd(evts, SCENEEVENT_TYPE_KEYDOWN, k, 0, 0); break; case SDL_QUIT: OS_quit(); break; default: break; } } timenow = getNanoTime(); while (timenow - ltime < (frameTime)) { timenow = getNanoTime(); } display(); ltime = timenow; }
void run() { running = true; long long lastTime = 0; long long startTime; long long passedTime; long long frameTimeNano = (long long)(1000000000.0 / frameCap); long long inputTimeNano = (long long)(1000000000.0 / inputCap); long long updateTimeNano = (long long)(1000000000.0 / updateCap); int frames = 0; int updates = 0; int inputs = 0; long long unprocessedTime_Render = 0; long long unprocessedTime_FPScount = 0; long long unprocessedTime_Input = 0; long long unprocessedTime_Update = 0; while (running) { if (window->closed()) { running = false; } if (lastTime == 0) { lastTime = getNanoTime(); } startTime = getNanoTime(); passedTime = startTime - lastTime; lastTime = startTime; unprocessedTime_Render += passedTime; unprocessedTime_FPScount += passedTime; unprocessedTime_Input += passedTime; unprocessedTime_Update += passedTime; if (unprocessedTime_Input >= inputTimeNano) { input(unprocessedTime_Input / 1000000000.0); inputs++; unprocessedTime_Input = 0; } if (unprocessedTime_Update >= updateTimeNano) { update(unprocessedTime_Update / 1000000000.0); updates++; unprocessedTime_Update = 0; } if (unprocessedTime_Render > frameTimeNano) { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); render(); frames++; window->update(); unprocessedTime_Render = 0; } if (unprocessedTime_FPScount >= 1000000000) { printf("\n%.2f fps\t", (double)frames / (double)(unprocessedTime_FPScount / 1000000000.0)); printf("%.2f updates per second\t", (double)updates / (double)(unprocessedTime_FPScount / 1000000000.0)); printf("%.2f inputs per second\n", (double)inputs / (double)(unprocessedTime_FPScount / 1000000000.0)); frames = 0; updates = 0; inputs = 0; unprocessedTime_FPScount = 0; } } }