diff --git a/server/src/main/java/com/genymobile/scrcpy/opengl/OpenGLRunner.java b/server/src/main/java/com/genymobile/scrcpy/opengl/OpenGLRunner.java index 86bd1859..6d34d840 100644 --- a/server/src/main/java/com/genymobile/scrcpy/opengl/OpenGLRunner.java +++ b/server/src/main/java/com/genymobile/scrcpy/opengl/OpenGLRunner.java @@ -193,14 +193,20 @@ public final class OpenGLRunner { filter.init(); - surfaceTexture.setOnFrameAvailableListener(surfaceTexture -> { - if (stopped) { - // Make sure to never render after resources have been released - return; - } + Runnable runnable = new Runnable() { + @Override public void run() { + if (stopped) { + // Make sure to never render after resources have been released + return; + } - render(outputSize); - }, handler); + render(outputSize); + + handler.postDelayed(this, 15); + } + }; + + handler.post(runnable); } private void render(Size outputSize) { @@ -219,7 +225,7 @@ public final class OpenGLRunner { filter.draw(textureId, matrix); - EGLExt.eglPresentationTimeANDROID(eglDisplay, eglSurface, surfaceTexture.getTimestamp()); + //EGLExt.eglPresentationTimeANDROID(eglDisplay, eglSurface, surfaceTexture.getTimestamp()); EGL14.eglSwapBuffers(eglDisplay, eglSurface); } diff --git a/server/src/main/java/com/genymobile/scrcpy/video/ScreenCapture.java b/server/src/main/java/com/genymobile/scrcpy/video/ScreenCapture.java index 5f4e1803..ddd5be09 100644 --- a/server/src/main/java/com/genymobile/scrcpy/video/ScreenCapture.java +++ b/server/src/main/java/com/genymobile/scrcpy/video/ScreenCapture.java @@ -111,6 +111,10 @@ public class ScreenCapture extends SurfaceCapture { virtualDisplay = null; } + if (transform == null) { + transform = AffineMatrix.IDENTITY; + } + Size inputSize; if (transform != null) { // If there is a filter, it must receive the full display content