Advertisement
Guest User

Untitled

a guest
May 3rd, 2014
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.09 KB | None | 0 0
  1.     @Override
  2.     public void run() {
  3.         Canvas canvas = null;
  4.  
  5.         long startTime = System.currentTimeMillis();
  6.         gameTime = System.currentTimeMillis();
  7.  
  8.         while (isRunning) {
  9.             synchronized (isSuspendedLock) {
  10.                 while (isSuspended) {
  11.                     try {
  12.                         isSuspendedLock.wait();
  13.                     } catch (InterruptedException e) {
  14.                         if (!isRunning)
  15.                             break;
  16.                     }
  17.                 }
  18.             }
  19.  
  20.             try {
  21.                 canvas = holder.lockCanvas(null);
  22.  
  23.                 synchronized (isRunningLock) {
  24.                     if (isRunning) {
  25.                         update(canvas);
  26.                     }
  27.                 }
  28.             } finally {
  29.                 if (canvas != null) {
  30.                     holder.unlockCanvasAndPost(canvas);
  31.                 }
  32.             }
  33.         }
  34. ...
  35.  
  36.     private void update(Canvas canvas) {
  37.         if (stateStack.isEmpty()) {
  38.             return;
  39.         }
  40.  
  41.         long nextTime = gameTime + TICK_MS;
  42.         long currentTime = System.currentTimeMillis();
  43.  
  44.         while (nextTime > currentTime) {
  45.             try {
  46.                 long sleepTime = nextTime - currentTime;
  47.                 Thread.sleep(sleepTime <= 0 ? 1 : sleepTime);
  48.             } catch (InterruptedException e) {
  49.                 return;
  50.             }
  51.  
  52.             currentTime = System.currentTimeMillis();
  53.         }
  54.  
  55.         synchronized (holder) {
  56.             if (stateStack.isEmpty()) {
  57.                 return;
  58.             }
  59.  
  60.             long delta = currentTime - gameTime;
  61.             if (delta > 0) {
  62.                 //Log.d(TAG, "Delta " + delta);
  63.                 gameTime += TICK_MS;
  64.  
  65.                 //ticksElapsed++;
  66.                 stateStack.get(stateStack.size() - 1).updatePhysics();
  67.             }
  68.  
  69.             //framesElapsed++;
  70.             for (GameState state : stateStack) {
  71.                 state.draw(canvas);
  72.             }
  73.  
  74.             //canvas.drawText("TPS: " + ticksElapsed / ((gameTime - startTime) / 1000.), 10, 30, testPaint);
  75.             //canvas.drawText("FPS: " + framesElapsed / ((gameTime - startTime) / 1000.), 10, 50, testPaint);
  76.         }
  77.     }
  78.  
  79. ...
  80.  
  81.     public void stopRendering() {
  82.         synchronized (isSuspendedLock) {
  83.             if (isSuspended) {
  84.                 return;
  85.             }
  86.  
  87.             Log.d(TAG, "stopRendering");
  88.  
  89.             isSuspended = true;
  90.         }
  91.     }
  92.  
  93.     public void continueRendering() {
  94.         synchronized (isSuspendedLock) {
  95.             if (!isSuspended) {
  96.                 return;
  97.             }
  98.  
  99.             Log.d(TAG, "continueRendering");
  100.  
  101.             isSuspended = false;
  102.             gameTime = System.currentTimeMillis();
  103.             isSuspendedLock.notifyAll();
  104.         }
  105.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement