2016-12-08 2 views
0

Я пытаюсь использовать Kickflip в качестве потоковой библиотеки в моем проекте.checkAndUpdateEglState: недействительный текущий EGLContext

Все, кажется, работает нормально, я получаю трансляцию на своем сервере отлично. Кроме случаев, когда я нажимаю кнопку питания на Android, и экран гаснет, при возвращении обратно в приложение я получаю эту ошибку:

12-08 14:04:05.225 8514-9009/com.kelmer.myapp E/GLConsumer: [SurfaceTexture-1-8514-0] checkAndUpdateEglState: invalid current EGLContext 
12-08 14:04:05.229 8514-9009/com.kelmer.myapp E/AndroidRuntime: FATAL EXCEPTION: GLThread 549 
                      Process: com.kelmer.myapp, PID: 8514 
                      java.lang.IllegalStateException: Unable to update texture contents (see logcat for details) 
                       at android.graphics.SurfaceTexture.nativeUpdateTexImage(Native Method) 
                       at android.graphics.SurfaceTexture.updateTexImage(SurfaceTexture.java:240) 
                       at io.kickflip.sdk.av.CameraSurfaceRenderer.onDrawFrame(CameraSurfaceRenderer.java:120) 
                       at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1553) 
                       at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1253) 

Я понятия не имею, что это может означать, любые предложения?

ответ

1

Контекст EGL может автоматически освобождаться операционной системой, когда процесс спал или переместился на задний план, чтобы остановить все системные ресурсы (как контекст EGL, так и память для ресурсов) с помощью фоновых процессов. Приложение должно восстанавливать контекст EGL (и все графические ресурсы), когда процесс снова перенаправляется.

Смотрите документацию по onPause() здесь:

https://developer.android.com/reference/android/opengl/GLSurfaceView.html

Вы можете отключить это (на некоторых устройствах, это не гарантируется, например, если устройство не поддерживает несколько контекстов EGL и передний план потребности процесса один) с использованием setPreserveEGLContextOnPause(), но это обескураживается, поскольку он блокирует ресурсы, которые приложение переднего плана поэтому не может использовать.

Смежные вопросы