private void updatePpi() {
   DisplayMetrics metrics = new DisplayMetrics();
   app.getWindowManager().getDefaultDisplay().getMetrics(metrics);
   ppiX = metrics.xdpi;
   ppiY = metrics.ydpi;
   ppcX = metrics.xdpi / 2.54f;
   ppcY = metrics.ydpi / 2.54f;
   density = metrics.density;
 }
 @Override
 public void onSurfaceCreated(javax.microedition.khronos.opengles.GL10 gl, EGLConfig config) {
   eglContext = ((EGL10) EGLContext.getEGL()).eglGetCurrentContext();
   setupGL(gl);
   logConfig(config);
   updatePpi();
   Mesh.invalidateAllMeshes(app);
   Texture.invalidateAllTextures(app);
   ShaderProgram.invalidateAllShaderPrograms(app);
   FrameBuffer.invalidateAllFrameBuffers(app);
   Gdx.app.log("AndroidGraphics", Mesh.getManagedStatus());
   Gdx.app.log("AndroidGraphics", Texture.getManagedStatus());
   Gdx.app.log("AndroidGraphics", ShaderProgram.getManagedStatus());
   Gdx.app.log("AndroidGraphics", FrameBuffer.getManagedStatus());
   Display display = app.getWindowManager().getDefaultDisplay();
   this.width = display.getWidth();
   this.height = display.getHeight();
   mean = new WindowedMean(5);
   this.lastFrameTime = System.nanoTime();
   gl.glViewport(0, 0, this.width, this.height);
   isSurfaceCreated = true;
 }
 @Override
 public DisplayMode getDesktopDisplayMode() {
   DisplayMetrics metrics = new DisplayMetrics();
   app.getWindowManager().getDefaultDisplay().getMetrics(metrics);
   return new AndroidDisplayMode(metrics.widthPixels, metrics.heightPixels, 0, 0);
 }