Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public void run() {
- Canvas canvas = null;
- long startTime = System.currentTimeMillis();
- gameTime = System.currentTimeMillis();
- while (isRunning) {
- synchronized (isSuspendedLock) {
- while (isSuspended) {
- try {
- isSuspendedLock.wait();
- } catch (InterruptedException e) {
- if (!isRunning)
- break;
- }
- }
- }
- try {
- canvas = holder.lockCanvas(null);
- synchronized (isRunningLock) {
- if (isRunning) {
- update(canvas);
- }
- }
- } finally {
- if (canvas != null) {
- holder.unlockCanvasAndPost(canvas);
- }
- }
- }
- ...
- private void update(Canvas canvas) {
- if (stateStack.isEmpty()) {
- return;
- }
- long nextTime = gameTime + TICK_MS;
- long currentTime = System.currentTimeMillis();
- while (nextTime > currentTime) {
- try {
- long sleepTime = nextTime - currentTime;
- Thread.sleep(sleepTime <= 0 ? 1 : sleepTime);
- } catch (InterruptedException e) {
- return;
- }
- currentTime = System.currentTimeMillis();
- }
- synchronized (holder) {
- if (stateStack.isEmpty()) {
- return;
- }
- long delta = currentTime - gameTime;
- if (delta > 0) {
- //Log.d(TAG, "Delta " + delta);
- gameTime += TICK_MS;
- //ticksElapsed++;
- stateStack.get(stateStack.size() - 1).updatePhysics();
- }
- //framesElapsed++;
- for (GameState state : stateStack) {
- state.draw(canvas);
- }
- //canvas.drawText("TPS: " + ticksElapsed / ((gameTime - startTime) / 1000.), 10, 30, testPaint);
- //canvas.drawText("FPS: " + framesElapsed / ((gameTime - startTime) / 1000.), 10, 50, testPaint);
- }
- }
- ...
- public void stopRendering() {
- synchronized (isSuspendedLock) {
- if (isSuspended) {
- return;
- }
- Log.d(TAG, "stopRendering");
- isSuspended = true;
- }
- }
- public void continueRendering() {
- synchronized (isSuspendedLock) {
- if (!isSuspended) {
- return;
- }
- Log.d(TAG, "continueRendering");
- isSuspended = false;
- gameTime = System.currentTimeMillis();
- isSuspendedLock.notifyAll();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement