android – eglCreateWindowSurface失败,出现java.lang.IllegalArgumentException

概述在使用GLSurfaceView启动某些活动期间尝试快速按下后退按钮时,eglCreateWindowSurface会因 java.lang.IllegalArgumentException而失败. 我收到以下错误: 10-08 18:05:36.490: E/GLSurfaceView(3440): eglCreateWindowSurface10-08 18:05:36.490: E/GLS 在使用GLSurfaceVIEw启动某些活动期间尝试快速按下后退按钮时,eglCreatewindowsurface会因 java.lang.IllegalArgumentException而失败.

我收到以下错误:

10-08 18:05:36.490: E/GLSurfaceVIEw(3440): eglCreatewindowsurface10-08 18:05:36.490: E/GLSurfaceVIEw(3440): java.lang.IllegalArgumentException: Make sure the SurfaceVIEw or associated SurfaceHolder has a valID Surface10-08 18:05:36.490: E/GLSurfaceVIEw(3440): at com.Google.androID.gles_jni.EGlimpl._eglCreatewindowsurface(Native Method)10-08 18:05:36.490: E/GLSurfaceVIEw(3440): at com.Google.androID.gles_jni.EGlimpl.eglCreatewindowsurface(EGlimpl.java:90)10-08 18:05:36.490: E/GLSurfaceVIEw(3440): at androID.opengl.GLSurfaceVIEw$DefaultwindowsurfaceFactory.createwindowsurface(GLSurfaceVIEw.java:798)10-08 18:05:36.490: E/GLSurfaceVIEw(3440): at androID.opengl.GLSurfaceVIEw$EglHelper.createSurface(GLSurfaceVIEw.java:1065)10-08 18:05:36.490: E/GLSurfaceVIEw(3440): at androID.opengl.GLSurfaceVIEw$GLThread.guardedRun(GLSurfaceVIEw.java:1433)10-08 18:05:36.490: E/GLSurfaceVIEw(3440): at androID.opengl.GLSurfaceVIEw$GLThread.run(GLSurfaceVIEw.java:1216)

这些活动未在SurfaceHolder.Callback.surfaceCreated之前或SurfaceHolder.Callback.surfaceDestroyed之后调用GL *** 作.

有没有其他人遇到这个问题,解决方案是什么?

谢谢你的任何进步.

解决方法 在多个活动之间切换快速撕裂窗口表面.

我修补了GLSurfaceVIEw.guardedRun()以避免GLSurfaceVIEw的竞争条件

从:

if (createEglSurface) {                    if (LOG_SURFACE) {                        Log.w("GLThread","egl createSurface");                    }                    gl = (GL10) mEglHelper.createSurface(getHolder());                    if (gl == null) {                        // Couldn't create a surface. Quit quIEtly.                        break;                    }                    sGLThreadManager.checkGLDriver(gl);                    createEglSurface = false;                }

至:

if (createEglSurface) {                    if (LOG_SURFACE) {                        Log.w("GLThread","egl createSurface");                    }                    gl = (GL10) mEglHelper.createSurface(getHolder());                    if (gl == null) {                        // If we escape,GLThread ends up. Don't escape.                        continue;                    }                    sGLThreadManager.checkGLDriver(gl);                    createEglSurface = false;                }

它看起来像这个问题是fixed in JellyBean.

总结

以上是内存溢出为你收集整理的android – eglCreateWindowSurface失败,出现java.lang.IllegalArgumentException全部内容,希望文章能够帮你解决android – eglCreateWindowSurface失败,出现java.lang.IllegalArgumentException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1138975.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存