Browse Source

force 30 Hz in GLSurfaceView (was at 60 Hz so this should save some battery)

Fabio Arnold 10 years ago
parent
commit
03a559632c

+ 2 - 6
src/de/tudarmstadt/informatik/hostage/ui2/fragment/opengl/AnimatedMesh.java

@@ -276,8 +276,6 @@ public class AnimatedMesh {
 		v3[2] = v1[2] + v2[2];
 		return v3;
 	}
-	
-	private boolean halfFramerate = false;
 
 	/**
 	 * animate the mesh for one frame
@@ -299,15 +297,13 @@ public class AnimatedMesh {
 			// advance one frame
 			if (reverseAction) {
 				if (currentFrame > 0) {
-					if (halfFramerate = !halfFramerate)
-						currentFrame--;
+					currentFrame--;
 				} else if (loopAction) {
 					currentFrame = currentAction.numFrames - 1;
 				}
 			} else {
 				if (currentFrame < currentAction.numFrames - 1) {
-					if (halfFramerate = !halfFramerate)
-						currentFrame++;
+					currentFrame++;
 				} else if (loopAction) {
 					currentFrame = 0;
 				}

+ 10 - 1
src/de/tudarmstadt/informatik/hostage/ui2/fragment/opengl/ThreatIndicatorGLRenderer.java

@@ -129,7 +129,7 @@ public class ThreatIndicatorGLRenderer implements Renderer {
 	}
 	
 	/**
-	 * Will be called every ~16 milliseconds -> 60 Hz
+	 * Tries to render at 30 Hz (see bottom part)
 	 */
 	public void onDrawFrame(GL10 arg0) {
 		long timeMillis = System.currentTimeMillis() - startTimeMillis;
@@ -267,6 +267,15 @@ public class ThreatIndicatorGLRenderer implements Renderer {
 			beeMesh.tick();
 			beeMesh.draw(program);
 		}
+		
+		long deltaTime = System.currentTimeMillis() - startTimeMillis - timeMillis; // time for one frame
+		if (deltaTime < 33) {
+			try {
+				Thread.sleep(33 - deltaTime); // sleep remaining time for 30 Hz
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
 	}
 
 	/**