Skip to content

Commit

Permalink
stop with securesubmit and fix forcerenderer fps
Browse files Browse the repository at this point in the history
  • Loading branch information
pedroSG94 committed Mar 11, 2024
1 parent 3d9427c commit e0d2db5
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 25 deletions.
Expand Up @@ -41,7 +41,7 @@ class ForceRenderer {
fun setEnabled(enabled: Boolean, fps: Int) {
this.enabled = enabled
if (fps <= 0) this.enabled = false
this.fps = fps.toLong() * 2
this.fps = fps.toLong()
}

fun start(callback: () -> Unit) {
Expand Down
28 changes: 17 additions & 11 deletions library/src/main/java/com/pedro/library/view/GlStreamInterface.kt
Expand Up @@ -144,21 +144,23 @@ class GlStreamInterface(private val context: Context): OnFrameAvailableListener,
surfaceManagerPhoto.eglSetup(encoderWidth, encoderHeight, surfaceManager)
running = true
mainRender.getSurfaceTexture().setOnFrameAvailableListener(this)
forceRender.start { onFrameAvailable(mainRender.getSurfaceTexture()) }
forceRender.start { render(true) }
if (autoHandleOrientation) sensorRotationManager.start()
}
}

override fun stop() {
running = false
forceRender.stop()
sensorRotationManager.stop()
executor?.shutdownNow()
executor = null
surfaceManagerPhoto.release()
surfaceManagerEncoder.release()
surfaceManager.release()
mainRender.release()
executor?.secureSubmit {
forceRender.stop()
sensorRotationManager.stop()
surfaceManagerPhoto.release()
surfaceManagerEncoder.release()
surfaceManager.release()
mainRender.release()
executor?.shutdownNow()
executor = null
}
}

private fun draw() {
Expand Down Expand Up @@ -212,12 +214,16 @@ class GlStreamInterface(private val context: Context): OnFrameAvailableListener,
}
}

override fun onFrameAvailable(surfaceTexture: SurfaceTexture?) {
private fun render(forced: Boolean) {
if (!running || fpsLimiter.limitFPS()) return
forceRender.frameAvailable()
if (!forced) forceRender.frameAvailable()
executor?.execute { draw() }
}

override fun onFrameAvailable(surfaceTexture: SurfaceTexture?) {
render(false)
}

fun forceOrientation(forced: OrientationForced) {
this.orientationForced = forced
}
Expand Down
32 changes: 19 additions & 13 deletions library/src/main/java/com/pedro/library/view/OpenGlView.java
Expand Up @@ -263,6 +263,14 @@ private void draw() {
}
}

private void render(boolean forced) {
if (!running || fpsLimiter.limitFPS()) return;
ExecutorService executor = this.executor;
if (executor == null) return;
if (!forced) forceRenderer.frameAvailable();
executor.execute(this::draw);
}

@Override
public void addMediaCodecSurface(Surface surface) {
ExecutorService executor = this.executor;
Expand Down Expand Up @@ -307,7 +315,7 @@ public void start() {
forceRenderer.start(() -> {
ExecutorService ex = this.executor;
if (ex == null) return null;
ex.execute(() -> onFrameAvailable(mainRender.getSurfaceTexture()));
ex.execute(() -> render(true));
return null;
});
return null;
Expand All @@ -317,25 +325,23 @@ public void start() {
@Override
public void stop() {
running = false;
forceRenderer.stop();
ExecutorService executor = this.executor;
if (executor != null) {
if (executor == null) return;
ExtensionsKt.secureSubmit(executor, () -> {
forceRenderer.stop();
surfaceManagerPhoto.release();
surfaceManagerEncoder.release();
surfaceManager.release();
mainRender.release();
executor.shutdownNow();
this.executor = null;
}
surfaceManagerPhoto.release();
surfaceManagerEncoder.release();
surfaceManager.release();
mainRender.release();
return null;
});
}

@Override
public void onFrameAvailable(SurfaceTexture surfaceTexture) {
if (!running || fpsLimiter.limitFPS()) return;
ExecutorService executor = this.executor;
if (executor == null) return;
forceRenderer.frameAvailable();
executor.execute(this::draw);
render(false);
}

@Override
Expand Down

0 comments on commit e0d2db5

Please sign in to comment.